@pellux/goodvibes-agent 0.1.70 → 0.1.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +3 -3
  3. package/docs/README.md +2 -2
  4. package/docs/getting-started.md +1 -1
  5. package/docs/runtime-connection.md +37 -0
  6. package/package.json +43 -2
  7. package/src/agent/skill-discovery.ts +119 -0
  8. package/src/cli/config-overrides.ts +1 -5
  9. package/src/cli/entrypoint.ts +0 -6
  10. package/src/cli/help.ts +0 -43
  11. package/src/cli/index.ts +0 -2
  12. package/src/cli/management-commands.ts +1 -109
  13. package/src/cli/management.ts +1 -32
  14. package/src/cli/package-verification.ts +12 -4
  15. package/src/cli/parser.ts +0 -16
  16. package/src/cli/status.ts +1 -1
  17. package/src/cli/types.ts +0 -8
  18. package/src/input/commands/delegation-runtime.ts +0 -8
  19. package/src/input/commands/experience-runtime.ts +0 -177
  20. package/src/input/commands/guidance-runtime.ts +0 -69
  21. package/src/input/commands/local-runtime.ts +1 -57
  22. package/src/input/commands/local-setup-review.ts +1 -1
  23. package/src/input/commands/operator-runtime.ts +1 -145
  24. package/src/input/commands/platform-access-runtime.ts +2 -195
  25. package/src/input/commands/product-runtime.ts +0 -116
  26. package/src/input/commands/security-runtime.ts +88 -0
  27. package/src/input/commands/session-content.ts +0 -97
  28. package/src/input/commands/shell-core.ts +0 -13
  29. package/src/input/commands.ts +2 -95
  30. package/src/panels/builtin/operations.ts +3 -184
  31. package/src/panels/confirm-state.ts +1 -1
  32. package/src/panels/index.ts +0 -11
  33. package/src/version.ts +1 -1
  34. package/docs/deployment-and-services.md +0 -52
  35. package/src/cli/service-command.ts +0 -26
  36. package/src/cli/surface-command.ts +0 -247
  37. package/src/input/commands/branch-runtime.ts +0 -72
  38. package/src/input/commands/control-room-runtime.ts +0 -234
  39. package/src/input/commands/discovery-runtime.ts +0 -61
  40. package/src/input/commands/hooks-runtime.ts +0 -207
  41. package/src/input/commands/incident-runtime.ts +0 -106
  42. package/src/input/commands/integration-runtime.ts +0 -437
  43. package/src/input/commands/local-setup.ts +0 -288
  44. package/src/input/commands/managed-runtime.ts +0 -240
  45. package/src/input/commands/marketplace-runtime.ts +0 -305
  46. package/src/input/commands/memory-product-runtime.ts +0 -148
  47. package/src/input/commands/operator-panel-runtime.ts +0 -146
  48. package/src/input/commands/platform-services-runtime.ts +0 -271
  49. package/src/input/commands/profile-sync-runtime.ts +0 -110
  50. package/src/input/commands/provider.ts +0 -363
  51. package/src/input/commands/remote-runtime-pool.ts +0 -89
  52. package/src/input/commands/remote-runtime-setup.ts +0 -226
  53. package/src/input/commands/remote-runtime.ts +0 -432
  54. package/src/input/commands/replay-runtime.ts +0 -25
  55. package/src/input/commands/services-runtime.ts +0 -220
  56. package/src/input/commands/settings-sync-runtime.ts +0 -197
  57. package/src/input/commands/share-runtime.ts +0 -127
  58. package/src/input/commands/skills-runtime.ts +0 -226
  59. package/src/input/commands/teleport-runtime.ts +0 -68
  60. package/src/panels/cockpit-panel.ts +0 -183
  61. package/src/panels/communication-panel.ts +0 -153
  62. package/src/panels/control-plane-panel.ts +0 -211
  63. package/src/panels/forensics-panel.ts +0 -364
  64. package/src/panels/hooks-panel.ts +0 -239
  65. package/src/panels/incident-review-panel.ts +0 -197
  66. package/src/panels/marketplace-panel.ts +0 -212
  67. package/src/panels/ops-control-panel.ts +0 -150
  68. package/src/panels/ops-strategy-panel.ts +0 -235
  69. package/src/panels/orchestration-panel.ts +0 -272
  70. package/src/panels/plugins-panel.ts +0 -178
  71. package/src/panels/remote-panel.ts +0 -449
  72. package/src/panels/routes-panel.ts +0 -178
  73. package/src/panels/services-panel.ts +0 -231
  74. package/src/panels/settings-sync-panel.ts +0 -120
  75. package/src/panels/skills-panel.ts +0 -431
  76. package/src/panels/watchers-panel.ts +0 -193
  77. package/src/verification/live-verifier.ts +0 -588
  78. package/src/verification/verification-ledger.ts +0 -239
@@ -1,239 +0,0 @@
1
- import { readFileSync, readdirSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { CONFIG_SCHEMA } from '@pellux/goodvibes-sdk/platform/config';
4
- import { FEATURE_FLAG_MAP } from '@pellux/goodvibes-sdk/platform/runtime/state';
5
- import { CommandRegistry } from '../input/command-registry.ts';
6
- import { registerBuiltinCommands } from '../input/commands.ts';
7
-
8
- export interface VerificationLedgerArea {
9
- readonly area: string;
10
- readonly total: number;
11
- readonly localSignalVerified: number;
12
- readonly localBehaviorVerified: number;
13
- readonly externalOutcomeRequired: number;
14
- readonly notes: string;
15
- }
16
-
17
- export interface VerificationLedger {
18
- readonly generatedAt: string;
19
- readonly areas: readonly VerificationLedgerArea[];
20
- readonly totals: {
21
- readonly total: number;
22
- readonly localSignalVerified: number;
23
- readonly localBehaviorVerified: number;
24
- readonly externalOutcomeRequired: number;
25
- readonly localSignalPercent: number;
26
- readonly localBehaviorPercent: number;
27
- };
28
- }
29
-
30
- const EXTERNAL_SLASH_COMMANDS = new Set([
31
- 'auth',
32
- 'bridge',
33
- 'health',
34
- 'listener',
35
- 'login',
36
- 'logout',
37
- 'mcp',
38
- 'notify',
39
- 'pair',
40
- 'qrcode',
41
- 'remote',
42
- 'remote-env',
43
- 'remote-setup',
44
- 'runner-pool',
45
- 'scan',
46
- 'secrets',
47
- 'services',
48
- 'subscription',
49
- 'teleport',
50
- 'tts',
51
- 'tunnel',
52
- 'voice',
53
- ]);
54
-
55
- const EXTERNAL_CLI_COMMANDS = new Set([
56
- 'bridge',
57
- 'listener',
58
- 'pair',
59
- 'remote',
60
- 'run',
61
- 'serve',
62
- 'service',
63
- 'tui',
64
- 'web',
65
- ]);
66
-
67
- const ONBOARDING_CAPABILITIES = [
68
- 'local-tui-only',
69
- 'browser-access',
70
- 'network-access',
71
- 'webhook-events',
72
- 'external-integrations',
73
- ] as const;
74
-
75
- const EXTERNAL_SURFACES = [
76
- 'bluebubbles',
77
- 'discord',
78
- 'googleChat',
79
- 'imessage',
80
- 'matrix',
81
- 'mattermost',
82
- 'msteams',
83
- 'ntfy',
84
- 'signal',
85
- 'slack',
86
- 'telegram',
87
- 'webhook',
88
- 'whatsapp',
89
- ] as const;
90
-
91
- function percent(numerator: number, denominator: number): number {
92
- return denominator === 0 ? 0 : Math.round((numerator / denominator) * 1000) / 10;
93
- }
94
-
95
- function listSlashCommands(): string[] {
96
- const registry = new CommandRegistry();
97
- registerBuiltinCommands(registry);
98
- return registry.getAll().map((command) => command.name);
99
- }
100
-
101
- function countBuiltinPanels(root: string): number {
102
- const builtinDir = join(root, 'src', 'panels', 'builtin');
103
- let count = 0;
104
- for (const file of readdirSync(builtinDir)) {
105
- if (!file.endsWith('.ts')) continue;
106
- const text = readFileSync(join(builtinDir, file), 'utf8');
107
- count += [...text.matchAll(/registerType\(\s*\{\s*id:\s*['"][^'"]+['"]/g)].length;
108
- }
109
- return count;
110
- }
111
-
112
- function listCliCommands(root: string): string[] {
113
- const text = readFileSync(join(root, 'src', 'cli', 'types.ts'), 'utf8');
114
- const match = text.match(/export type GoodVibesCliCommand =([\s\S]*?)export type GoodVibesCliOutputFormat/);
115
- if (!match) return [];
116
- return [...match[1].matchAll(/\|\s*'([^']+)'/g)]
117
- .map((entry) => entry[1])
118
- .filter((command) => command !== 'unknown');
119
- }
120
-
121
- export function buildVerificationLedger(root: string): VerificationLedger {
122
- const slashCommandNames = listSlashCommands();
123
- const cliCommandNames = listCliCommands(root);
124
- const slashCommands = slashCommandNames.length;
125
- const panels = countBuiltinPanels(root);
126
- const cliCommands = cliCommandNames.length;
127
- const featureFlags = FEATURE_FLAG_MAP.size;
128
- const settings = CONFIG_SCHEMA.length;
129
- const externalSlashCommands = slashCommandNames.filter((command) => EXTERNAL_SLASH_COMMANDS.has(command)).length;
130
- const externalCliCommands = cliCommandNames.filter((command) => EXTERNAL_CLI_COMMANDS.has(command)).length;
131
-
132
- const areas: VerificationLedgerArea[] = [
133
- {
134
- area: 'Settings schema and persistence',
135
- total: settings,
136
- localSignalVerified: settings,
137
- localBehaviorVerified: 184,
138
- externalOutcomeRequired: settings - 184,
139
- notes: 'Every schema setting can be validated for schema/default/load/write/location; external side effects remain separate.',
140
- },
141
- {
142
- area: 'Feature flags',
143
- total: featureFlags,
144
- localSignalVerified: featureFlags,
145
- localBehaviorVerified: featureFlags - 4,
146
- externalOutcomeRequired: 4,
147
- notes: 'All flags can be loaded/toggled; a small surface/service subset still requires live external behavior.',
148
- },
149
- {
150
- area: 'Slash commands',
151
- total: slashCommands,
152
- localSignalVerified: slashCommands,
153
- localBehaviorVerified: slashCommands - externalSlashCommands,
154
- externalOutcomeRequired: externalSlashCommands,
155
- notes: 'Every command can be routed and invoked with a fake context; external/provider/device commands need live outcome checks.',
156
- },
157
- {
158
- area: 'Built-in panels',
159
- total: panels,
160
- localSignalVerified: panels,
161
- localBehaviorVerified: panels,
162
- externalOutcomeRequired: 0,
163
- notes: 'Panels can be rendered and input-tested against fake read models and real cached state.',
164
- },
165
- {
166
- area: 'Top-level CLI commands',
167
- total: cliCommands,
168
- localSignalVerified: cliCommands,
169
- localBehaviorVerified: cliCommands - externalCliCommands,
170
- externalOutcomeRequired: externalCliCommands,
171
- notes: 'Parser/help/status/package behavior is local; long-running TUI/service/remote flows require process or external checks.',
172
- },
173
- {
174
- area: 'External surfaces',
175
- total: EXTERNAL_SURFACES.length,
176
- localSignalVerified: EXTERNAL_SURFACES.length,
177
- localBehaviorVerified: 2,
178
- externalOutcomeRequired: EXTERNAL_SURFACES.length - 2,
179
- notes: 'Config/readiness can be local for all surfaces; real message delivery is external for most surfaces.',
180
- },
181
- {
182
- area: 'Onboarding capability bundles',
183
- total: ONBOARDING_CAPABILITIES.length,
184
- localSignalVerified: ONBOARDING_CAPABILITIES.length,
185
- localBehaviorVerified: ONBOARDING_CAPABILITIES.length,
186
- externalOutcomeRequired: 0,
187
- notes: 'Wizard state derivation/apply is local; daemon-backed outcomes stay external to Agent ownership.',
188
- },
189
- ];
190
-
191
- const total = areas.reduce((sum, area) => sum + area.total, 0);
192
- const localSignalVerified = areas.reduce((sum, area) => sum + area.localSignalVerified, 0);
193
- const localBehaviorVerified = areas.reduce((sum, area) => sum + area.localBehaviorVerified, 0);
194
- const externalOutcomeRequired = areas.reduce((sum, area) => sum + area.externalOutcomeRequired, 0);
195
-
196
- return {
197
- generatedAt: new Date().toISOString(),
198
- areas,
199
- totals: {
200
- total,
201
- localSignalVerified,
202
- localBehaviorVerified,
203
- externalOutcomeRequired,
204
- localSignalPercent: percent(localSignalVerified, total),
205
- localBehaviorPercent: percent(localBehaviorVerified, total),
206
- },
207
- };
208
- }
209
-
210
- export function renderVerificationLedgerMarkdown(ledger: VerificationLedger): string {
211
- const lines = [
212
- '# GoodVibes Verification Ledger',
213
- '',
214
- `Generated: ${ledger.generatedAt}`,
215
- '',
216
- '| Area | Total | Local verification signal | Local behavior | External outcome required | Notes |',
217
- '|---|---:|---:|---:|---:|---|',
218
- ...ledger.areas.map((area) => [
219
- `| ${area.area}`,
220
- area.total,
221
- area.localSignalVerified,
222
- area.localBehaviorVerified,
223
- area.externalOutcomeRequired,
224
- area.notes,
225
- ].join(' | ') + ' |'),
226
- '',
227
- '## Totals',
228
- '',
229
- `- Total inventory items: ${ledger.totals.total}`,
230
- `- Local verification signal: ${ledger.totals.localSignalVerified} (${ledger.totals.localSignalPercent}%)`,
231
- `- Local behavior verified: ${ledger.totals.localBehaviorVerified} (${ledger.totals.localBehaviorPercent}%)`,
232
- `- External outcome required: ${ledger.totals.externalOutcomeRequired}`,
233
- '',
234
- 'Local verification signal means the item can be exercised through schema, routing, persistence, render, readiness, daemon, CLI, or real-state checks without relying on an external SaaS/device outcome.',
235
- 'Local behavior verified means the behavior can be completed locally with in-process, CLI, daemon, tmux, or real persisted state.',
236
- '',
237
- ];
238
- return `${lines.join('\n')}\n`;
239
- }