@pellux/goodvibes-agent 1.0.31 → 1.0.34
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 +59 -2
- package/README.md +72 -58
- package/dist/package/main.js +7572 -2430
- package/docs/README.md +25 -21
- package/docs/channels-remote-and-api.md +6 -2
- package/docs/connected-host.md +27 -6
- package/docs/getting-started.md +87 -66
- package/docs/knowledge-artifacts-and-multimodal.md +16 -4
- package/docs/project-planning.md +2 -2
- package/docs/providers-and-routing.md +3 -2
- package/docs/release-and-publishing.md +15 -11
- package/docs/tools-and-commands.md +150 -128
- package/docs/voice-and-live-tts.md +1 -1
- package/package.json +8 -3
- package/release/live-verification/live-verification.json +148 -0
- package/release/live-verification/live-verification.md +187 -0
- package/release/performance-snapshot.json +57 -0
- package/release/release-notes.md +19 -0
- package/release/release-readiness.json +581 -0
- package/src/agent/harness-control.ts +42 -3
- package/src/cli/agent-knowledge-command.ts +5 -5
- package/src/cli/agent-knowledge-format.ts +11 -0
- package/src/cli/agent-knowledge-runtime.ts +92 -13
- package/src/cli/bundle-command.ts +5 -4
- package/src/cli/entrypoint.ts +5 -2
- package/src/cli/external-runtime.ts +2 -15
- package/src/cli/management.ts +4 -3
- package/src/input/commands/guidance-runtime.ts +1 -1
- package/src/input/commands/knowledge.ts +2 -2
- package/src/runtime/bootstrap.ts +10 -18
- package/src/runtime/connected-host-auth.ts +16 -0
- package/src/tools/agent-analysis-registry-policy.ts +2 -9
- package/src/tools/agent-channel-send-tool.ts +3 -9
- package/src/tools/agent-context-policy.ts +1 -5
- package/src/tools/agent-find-policy.ts +1 -4
- package/src/tools/agent-harness-channel-metadata.ts +177 -0
- package/src/tools/agent-harness-cli-metadata.ts +4 -1
- package/src/tools/agent-harness-command-catalog.ts +10 -3
- package/src/tools/agent-harness-connected-host-status.ts +9 -3
- package/src/tools/agent-harness-delegation-posture.ts +216 -0
- package/src/tools/agent-harness-keybinding-metadata.ts +57 -22
- package/src/tools/agent-harness-mcp-metadata.ts +248 -0
- package/src/tools/agent-harness-media-posture.ts +282 -0
- package/src/tools/agent-harness-metadata.ts +44 -9
- package/src/tools/agent-harness-model-routing.ts +501 -0
- package/src/tools/agent-harness-model-tool-catalog.ts +7 -2
- package/src/tools/agent-harness-notification-metadata.ts +217 -0
- package/src/tools/agent-harness-operator-methods.ts +285 -0
- package/src/tools/agent-harness-pairing-posture.ts +265 -0
- package/src/tools/agent-harness-panel-metadata.ts +26 -12
- package/src/tools/agent-harness-provider-account-metadata.ts +205 -0
- package/src/tools/agent-harness-release-evidence.ts +364 -0
- package/src/tools/agent-harness-release-readiness.ts +298 -0
- package/src/tools/agent-harness-security-posture.ts +648 -0
- package/src/tools/agent-harness-service-posture.ts +207 -0
- package/src/tools/agent-harness-session-metadata.ts +284 -0
- package/src/tools/agent-harness-setup-posture.ts +295 -0
- package/src/tools/agent-harness-tool-schema.ts +104 -27
- package/src/tools/agent-harness-tool.ts +251 -235
- package/src/tools/agent-harness-ui-surface-metadata.ts +20 -12
- package/src/tools/agent-harness-workspace-actions.ts +260 -0
- package/src/tools/agent-knowledge-ingest-tool.ts +4 -10
- package/src/tools/agent-knowledge-tool.ts +120 -25
- package/src/tools/agent-local-registry-tool.ts +3 -7
- package/src/tools/agent-media-generate-tool.ts +2 -8
- package/src/tools/agent-notify-tool.ts +3 -8
- package/src/tools/agent-operator-action-tool.ts +4 -10
- package/src/tools/agent-operator-briefing-tool.ts +1 -6
- package/src/tools/agent-read-policy.ts +1 -4
- package/src/tools/agent-reminder-schedule-tool.ts +4 -9
- package/src/tools/agent-tool-policy-guard.ts +15 -51
- package/src/tools/agent-web-search-policy.ts +1 -4
- package/src/tools/agent-work-plan-tool.ts +1 -6
- package/src/version.ts +2 -2
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import type { OnboardingStep1CapabilityItem, OnboardingSurfaceRecord } from '../runtime/onboarding/index.ts';
|
|
2
|
+
import { collectOnboardingSnapshot, deriveStep1Capabilities, deriveStep1CapabilityFlags } from '../runtime/onboarding/index.ts';
|
|
3
|
+
import type { CommandContext } from '../input/command-registry.ts';
|
|
4
|
+
import { buildProviderAccountSnapshot } from '../panels/provider-account-snapshot.ts';
|
|
5
|
+
import { requireLocalUserAuthManager, requirePlatform, requireProvider, requireSecretsManager, requireServiceRegistry, requireShellPaths, requireSubscriptionManager } from '../input/commands/runtime-services.ts';
|
|
6
|
+
|
|
7
|
+
export interface AgentHarnessSetupArgs {
|
|
8
|
+
readonly setupItemId?: unknown;
|
|
9
|
+
readonly target?: unknown;
|
|
10
|
+
readonly query?: unknown;
|
|
11
|
+
readonly includeParameters?: unknown;
|
|
12
|
+
readonly limit?: unknown;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type SetupResolution =
|
|
16
|
+
| { readonly status: 'found'; readonly item: Record<string, unknown> }
|
|
17
|
+
| { readonly status: 'ambiguous'; readonly input: string; readonly candidates: readonly Record<string, unknown>[] }
|
|
18
|
+
| { readonly status: 'missing_lookup'; readonly usage: string };
|
|
19
|
+
|
|
20
|
+
type SetupLookupSource = 'setupItemId' | 'target' | 'query';
|
|
21
|
+
|
|
22
|
+
interface SurfaceRegistryLike {
|
|
23
|
+
syncConfiguredSurfaces(): readonly OnboardingSurfaceRecord[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function readString(value: unknown): string {
|
|
27
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function readLimit(value: unknown, fallback: number): number {
|
|
31
|
+
const parsed = typeof value === 'string' && value.trim() ? Number(value) : value;
|
|
32
|
+
if (typeof parsed !== 'number' || !Number.isFinite(parsed)) return fallback;
|
|
33
|
+
return Math.max(1, Math.min(500, Math.trunc(parsed)));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function safeIso(value: number | null | undefined): string | null {
|
|
37
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) return null;
|
|
38
|
+
return new Date(value).toISOString();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function surfaceRegistry(context: CommandContext): SurfaceRegistryLike | undefined {
|
|
42
|
+
const candidate = (context.platform as { readonly surfaceRegistry?: unknown }).surfaceRegistry;
|
|
43
|
+
if (candidate && typeof candidate === 'object' && 'syncConfiguredSurfaces' in candidate) {
|
|
44
|
+
return candidate as SurfaceRegistryLike;
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async function collectSnapshot(context: CommandContext) {
|
|
50
|
+
const registry = surfaceRegistry(context);
|
|
51
|
+
return await collectOnboardingSnapshot({
|
|
52
|
+
config: requirePlatform(context).configManager,
|
|
53
|
+
shellPaths: requireShellPaths(context),
|
|
54
|
+
acknowledgementScope: 'project',
|
|
55
|
+
subscriptions: requireSubscriptionManager(context),
|
|
56
|
+
secrets: requireSecretsManager(context),
|
|
57
|
+
auth: requireLocalUserAuthManager(context),
|
|
58
|
+
services: requireServiceRegistry(context),
|
|
59
|
+
...(registry ? {
|
|
60
|
+
surfaces: {
|
|
61
|
+
list: () => registry.syncConfiguredSurfaces(),
|
|
62
|
+
},
|
|
63
|
+
} : {}),
|
|
64
|
+
providerAccounts: {
|
|
65
|
+
loadSnapshot: () => buildProviderAccountSnapshot({
|
|
66
|
+
providerModels: requireProvider(context).providerRegistry,
|
|
67
|
+
services: requireServiceRegistry(context),
|
|
68
|
+
subscriptions: requireSubscriptionManager(context),
|
|
69
|
+
environment: {
|
|
70
|
+
hasEnvironmentVariable: (name: string) => Boolean(process.env[name]),
|
|
71
|
+
},
|
|
72
|
+
}),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function lookupFromArgs(args: AgentHarnessSetupArgs): { readonly source: SetupLookupSource; readonly input: string } | null {
|
|
78
|
+
const setupItemId = readString(args.setupItemId);
|
|
79
|
+
if (setupItemId) return { source: 'setupItemId', input: setupItemId };
|
|
80
|
+
const target = readString(args.target);
|
|
81
|
+
if (target) return { source: 'target', input: target };
|
|
82
|
+
const query = readString(args.query);
|
|
83
|
+
return query ? { source: 'query', input: query } : null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function itemSearchText(item: OnboardingStep1CapabilityItem): string {
|
|
87
|
+
return [
|
|
88
|
+
item.id,
|
|
89
|
+
item.label,
|
|
90
|
+
item.detail,
|
|
91
|
+
item.selected ? 'selected ready configured enabled' : 'optional attention unselected',
|
|
92
|
+
].join('\n').toLowerCase();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function summarizeLocalBehavior(snapshot: Awaited<ReturnType<typeof collectSnapshot>>): Record<string, unknown> {
|
|
96
|
+
const discovery = snapshot.localBehaviorDiscovery;
|
|
97
|
+
return {
|
|
98
|
+
personas: discovery.personas,
|
|
99
|
+
skills: discovery.skills,
|
|
100
|
+
routines: discovery.routines,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function signalsForItem(
|
|
105
|
+
item: OnboardingStep1CapabilityItem,
|
|
106
|
+
snapshot: Awaited<ReturnType<typeof collectSnapshot>>,
|
|
107
|
+
): Record<string, unknown> {
|
|
108
|
+
if (item.id === 'provider-access') {
|
|
109
|
+
return {
|
|
110
|
+
currentRoute: snapshot.providerRouting,
|
|
111
|
+
providerAccounts: {
|
|
112
|
+
providers: snapshot.providerAccounts?.providers.length ?? 0,
|
|
113
|
+
configured: snapshot.providerAccounts?.configuredCount ?? 0,
|
|
114
|
+
issues: snapshot.providerAccounts?.issueCount ?? 0,
|
|
115
|
+
},
|
|
116
|
+
subscriptions: {
|
|
117
|
+
active: snapshot.subscriptions.active.length,
|
|
118
|
+
pending: snapshot.subscriptions.pending.length,
|
|
119
|
+
activeProviderIds: snapshot.subscriptions.activeProviderIds,
|
|
120
|
+
pendingProviderIds: snapshot.subscriptions.pendingProviderIds,
|
|
121
|
+
},
|
|
122
|
+
credentialReferences: snapshot.secrets.records.length,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (item.id === 'local-behavior') {
|
|
126
|
+
return summarizeLocalBehavior(snapshot);
|
|
127
|
+
}
|
|
128
|
+
if (item.id === 'communication-channels') {
|
|
129
|
+
return {
|
|
130
|
+
configuredEnabledKinds: snapshot.surfaces.configuredEnabledKinds,
|
|
131
|
+
surfaces: snapshot.surfaces.records.map((surface) => ({
|
|
132
|
+
id: surface.id,
|
|
133
|
+
kind: surface.kind,
|
|
134
|
+
label: surface.label,
|
|
135
|
+
enabled: surface.enabled,
|
|
136
|
+
state: surface.state,
|
|
137
|
+
capabilities: surface.capabilities,
|
|
138
|
+
})),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (item.id === 'automation-review') {
|
|
142
|
+
return {
|
|
143
|
+
permissionsMode: snapshot.runtimeDefaults.permissionsMode,
|
|
144
|
+
helperEnabled: snapshot.providerRouting.helperEnabled,
|
|
145
|
+
toolLlmEnabled: snapshot.providerRouting.toolLlmEnabled,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (item.id === 'operator-terminal') {
|
|
149
|
+
return {
|
|
150
|
+
display: snapshot.runtimeDefaults.display,
|
|
151
|
+
setupMarker: {
|
|
152
|
+
scope: snapshot.acknowledgements.scope,
|
|
153
|
+
exists: snapshot.acknowledgements.exists,
|
|
154
|
+
updatedAt: safeIso(snapshot.acknowledgements.updatedAt),
|
|
155
|
+
source: snapshot.acknowledgements.source,
|
|
156
|
+
mode: snapshot.acknowledgements.mode ?? null,
|
|
157
|
+
},
|
|
158
|
+
collectionIssues: snapshot.collectionIssues,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
status: item.selected ? 'covered' : 'available',
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function describeItem(
|
|
167
|
+
item: OnboardingStep1CapabilityItem,
|
|
168
|
+
snapshot: Awaited<ReturnType<typeof collectSnapshot>>,
|
|
169
|
+
options: {
|
|
170
|
+
readonly includeParameters?: boolean;
|
|
171
|
+
readonly lookup?: Record<string, unknown>;
|
|
172
|
+
} = {},
|
|
173
|
+
): Record<string, unknown> {
|
|
174
|
+
return {
|
|
175
|
+
setupItemId: item.id,
|
|
176
|
+
label: item.label,
|
|
177
|
+
selected: item.selected,
|
|
178
|
+
detail: item.detail,
|
|
179
|
+
signals: signalsForItem(item, snapshot),
|
|
180
|
+
...(options.lookup ? { lookup: options.lookup } : {}),
|
|
181
|
+
...(options.includeParameters ? {
|
|
182
|
+
policy: {
|
|
183
|
+
effect: 'read-only',
|
|
184
|
+
values: 'Setup posture returns onboarding readiness, counts, safe setting keys, and route metadata only; secret values and raw provider tokens are never returned.',
|
|
185
|
+
mutation: 'Setup apply, provider auth, local behavior import/create, channel delivery, and starter profile changes stay visible workspace, settings, slash-command, or first-class tool flows.',
|
|
186
|
+
},
|
|
187
|
+
modelAccess: {
|
|
188
|
+
inspectSetup: 'agent_harness mode:"setup_posture"',
|
|
189
|
+
inspectSetupItem: 'agent_harness mode:"setup_item"',
|
|
190
|
+
openOnboarding: 'agent_harness mode:"open_ui_surface" surfaceId:"onboarding" confirm:true explicitUserRequest:"..."',
|
|
191
|
+
setupWorkspace: 'agent_harness mode:"workspace_action" target:"setup"',
|
|
192
|
+
settings: 'agent_harness modes settings/get_setting/set_setting/reset_setting',
|
|
193
|
+
providerRouting: 'agent_harness mode:"model_routing"',
|
|
194
|
+
providerAccounts: 'agent_harness mode:"provider_accounts"',
|
|
195
|
+
channels: 'agent_harness mode:"channels"',
|
|
196
|
+
media: 'agent_harness mode:"media_posture"',
|
|
197
|
+
security: 'agent_harness mode:"security_posture"',
|
|
198
|
+
},
|
|
199
|
+
} : {}),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function describeCandidate(item: OnboardingStep1CapabilityItem): Record<string, unknown> {
|
|
204
|
+
return {
|
|
205
|
+
setupItemId: item.id,
|
|
206
|
+
label: item.label,
|
|
207
|
+
selected: item.selected,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export async function setupPostureCatalogStatus(context: CommandContext): Promise<Record<string, unknown>> {
|
|
212
|
+
const snapshot = await collectSnapshot(context);
|
|
213
|
+
return {
|
|
214
|
+
modes: ['setup_posture', 'setup_item'],
|
|
215
|
+
capabilities: deriveStep1Capabilities(snapshot).length,
|
|
216
|
+
collectionIssues: snapshot.collectionIssues.length,
|
|
217
|
+
setupMarkerExists: snapshot.acknowledgements.exists,
|
|
218
|
+
readOnly: true,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export async function setupPostureSummary(context: CommandContext, args: AgentHarnessSetupArgs): Promise<Record<string, unknown>> {
|
|
223
|
+
const snapshot = await collectSnapshot(context);
|
|
224
|
+
const query = readString(args.query).toLowerCase();
|
|
225
|
+
const includeParameters = args.includeParameters === true;
|
|
226
|
+
const all = deriveStep1Capabilities(snapshot);
|
|
227
|
+
const filtered = all
|
|
228
|
+
.filter((item) => !query || itemSearchText(item).includes(query))
|
|
229
|
+
.slice(0, readLimit(args.limit, 100));
|
|
230
|
+
return {
|
|
231
|
+
capturedAt: new Date(snapshot.capturedAt).toISOString(),
|
|
232
|
+
setupMarker: {
|
|
233
|
+
scope: snapshot.acknowledgements.scope,
|
|
234
|
+
exists: snapshot.acknowledgements.exists,
|
|
235
|
+
updatedAt: safeIso(snapshot.acknowledgements.updatedAt),
|
|
236
|
+
source: snapshot.acknowledgements.source,
|
|
237
|
+
mode: snapshot.acknowledgements.mode ?? null,
|
|
238
|
+
acceptedCount: Object.values(snapshot.acknowledgements.accepted).filter(Boolean).length,
|
|
239
|
+
},
|
|
240
|
+
summary: {
|
|
241
|
+
capabilities: all.length,
|
|
242
|
+
selectedCapabilities: all.filter((item) => item.selected).length,
|
|
243
|
+
collectionIssues: snapshot.collectionIssues.length,
|
|
244
|
+
services: snapshot.services.total,
|
|
245
|
+
oauthProviders: snapshot.services.oauthProviderIds.length,
|
|
246
|
+
subscriptionSessions: snapshot.subscriptions.active.length,
|
|
247
|
+
pendingSubscriptionSessions: snapshot.subscriptions.pending.length,
|
|
248
|
+
providerAccounts: snapshot.providerAccounts?.providers.length ?? 0,
|
|
249
|
+
providerAccountIssues: snapshot.providerAccounts?.issueCount ?? 0,
|
|
250
|
+
secretsStoredKeys: snapshot.secrets.review.storedKeys,
|
|
251
|
+
secretRecordCount: snapshot.secrets.records.length,
|
|
252
|
+
authUsers: snapshot.auth.snapshot.userCount,
|
|
253
|
+
authSessions: snapshot.auth.snapshot.sessionCount,
|
|
254
|
+
enabledSurfaceKinds: snapshot.surfaces.configuredEnabledKinds.length,
|
|
255
|
+
localBehavior: summarizeLocalBehavior(snapshot),
|
|
256
|
+
capabilityFlags: deriveStep1CapabilityFlags(snapshot),
|
|
257
|
+
},
|
|
258
|
+
currentRoute: snapshot.providerRouting,
|
|
259
|
+
issues: snapshot.collectionIssues,
|
|
260
|
+
capabilities: filtered.map((item) => describeItem(item, snapshot, { includeParameters })),
|
|
261
|
+
returned: filtered.length,
|
|
262
|
+
total: all.length,
|
|
263
|
+
policy: 'Read-only setup/onboarding posture. Apply, import, auth, profile, channel, and setting mutations remain confirmation-gated through visible workspace, settings, slash-command, or first-class tool flows.',
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export async function describeHarnessSetupItem(context: CommandContext, args: AgentHarnessSetupArgs): Promise<SetupResolution> {
|
|
268
|
+
const lookup = lookupFromArgs(args);
|
|
269
|
+
if (!lookup) {
|
|
270
|
+
return {
|
|
271
|
+
status: 'missing_lookup',
|
|
272
|
+
usage: 'setup_item requires setupItemId, target, or query. Use mode:"setup_posture" to inspect setup item ids.',
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
const snapshot = await collectSnapshot(context);
|
|
276
|
+
const items = deriveStep1Capabilities(snapshot);
|
|
277
|
+
const normalized = lookup.input.toLowerCase();
|
|
278
|
+
const exact = items.find((item) => item.id === lookup.input);
|
|
279
|
+
if (exact) return { status: 'found', item: describeItem(exact, snapshot, { includeParameters: true, lookup: { ...lookup, resolvedBy: 'id' } }) };
|
|
280
|
+
const insensitive = items.find((item) => item.id.toLowerCase() === normalized);
|
|
281
|
+
if (insensitive) return { status: 'found', item: describeItem(insensitive, snapshot, { includeParameters: true, lookup: { ...lookup, resolvedBy: 'case-insensitive-id' } }) };
|
|
282
|
+
const searched = items.filter((item) => itemSearchText(item).includes(normalized));
|
|
283
|
+
if (searched.length === 1) return { status: 'found', item: describeItem(searched[0]!, snapshot, { includeParameters: true, lookup: { ...lookup, resolvedBy: 'search' } }) };
|
|
284
|
+
if (searched.length > 1) {
|
|
285
|
+
return {
|
|
286
|
+
status: 'ambiguous',
|
|
287
|
+
input: lookup.input,
|
|
288
|
+
candidates: searched.slice(0, 8).map(describeCandidate),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
status: 'missing_lookup',
|
|
293
|
+
usage: `Unknown setup item ${lookup.input}. Use mode:"setup_posture" to inspect setup item ids.`,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
@@ -2,10 +2,23 @@ export const AGENT_HARNESS_MODES = [
|
|
|
2
2
|
'summary', 'cli_commands', 'cli_command', 'panels', 'panel', 'open_panel',
|
|
3
3
|
'ui_surfaces', 'ui_surface', 'open_ui_surface',
|
|
4
4
|
'shortcuts', 'keybindings', 'keybinding', 'run_keybinding', 'set_keybinding', 'reset_keybinding',
|
|
5
|
-
'commands', 'command', 'run_command', '
|
|
5
|
+
'commands', 'command', 'run_command', 'channels', 'channel', 'notifications', 'notification_target',
|
|
6
|
+
'provider_accounts', 'provider_account', 'mcp_servers', 'mcp_server',
|
|
7
|
+
'setup_posture', 'setup_item',
|
|
8
|
+
'model_routing', 'model_route',
|
|
9
|
+
'pairing_posture', 'pairing_route',
|
|
10
|
+
'delegation_posture', 'delegation_route',
|
|
11
|
+
'security_posture', 'security_finding', 'support_bundles', 'support_bundle',
|
|
12
|
+
'media_posture', 'media_provider',
|
|
13
|
+
'sessions', 'session',
|
|
14
|
+
'settings', 'get_setting', 'set_setting',
|
|
6
15
|
'reset_setting', 'workspace', 'workspace_categories', 'workspace_actions',
|
|
7
|
-
'workspace_action', 'run_workspace_action', 'tools', 'tool', '
|
|
8
|
-
'
|
|
16
|
+
'workspace_action', 'run_workspace_action', 'tools', 'tool', 'release_evidence', 'release_evidence_artifact',
|
|
17
|
+
'release_readiness', 'release_readiness_item',
|
|
18
|
+
'operator_methods', 'operator_method',
|
|
19
|
+
'service_posture', 'service_endpoint',
|
|
20
|
+
'connected_host', 'connected_host_status', 'connected_host_capability',
|
|
21
|
+
'daemon', 'daemon_status',
|
|
9
22
|
] as const;
|
|
10
23
|
|
|
11
24
|
const KEY_COMBO_PARAMETER_SCHEMA = {
|
|
@@ -19,53 +32,101 @@ export const AGENT_HARNESS_PARAMETER_PROPERTIES = {
|
|
|
19
32
|
mode: {
|
|
20
33
|
type: 'string',
|
|
21
34
|
enum: AGENT_HARNESS_MODES,
|
|
22
|
-
description: 'Harness operation
|
|
35
|
+
description: 'Harness operation. Start with summary or a plural catalog mode.',
|
|
23
36
|
},
|
|
24
37
|
query: {
|
|
25
38
|
type: 'string',
|
|
26
|
-
description: '
|
|
39
|
+
description: 'Catalog search text or single-item lookup text.',
|
|
27
40
|
},
|
|
28
41
|
command: {
|
|
29
42
|
type: 'string',
|
|
30
|
-
description: '
|
|
43
|
+
description: 'Slash command string, or CLI command string in cli_command mode.',
|
|
31
44
|
},
|
|
32
45
|
cliCommand: {
|
|
33
46
|
type: 'string',
|
|
34
|
-
description: 'Top-level CLI command string for
|
|
47
|
+
description: 'Top-level CLI command string for cli_command inspection.',
|
|
35
48
|
},
|
|
36
49
|
commandName: {
|
|
37
50
|
type: 'string',
|
|
38
|
-
description: 'Slash command root
|
|
51
|
+
description: 'Slash command root or top-level CLI command token.',
|
|
39
52
|
},
|
|
40
53
|
args: {
|
|
41
54
|
type: 'array',
|
|
42
55
|
items: { type: 'string' },
|
|
43
|
-
description: '
|
|
56
|
+
description: 'Arguments for run_command when commandName is used.',
|
|
57
|
+
},
|
|
58
|
+
channelId: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Channel id for channel mode.',
|
|
61
|
+
},
|
|
62
|
+
notificationTargetId: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Notification target id for notification_target mode.',
|
|
65
|
+
},
|
|
66
|
+
providerId: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Provider id for provider_account mode.',
|
|
69
|
+
},
|
|
70
|
+
mcpServerId: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'MCP server id for mcp_server mode.',
|
|
73
|
+
},
|
|
74
|
+
setupItemId: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
description: 'Setup item id for setup_item mode.',
|
|
77
|
+
},
|
|
78
|
+
modelRouteId: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'Model route id or model key for model_route mode.',
|
|
81
|
+
},
|
|
82
|
+
pairingRouteId: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
description: 'Pairing route id for pairing_route mode.',
|
|
85
|
+
},
|
|
86
|
+
delegationRouteId: {
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'Delegation route id for delegation_route mode.',
|
|
89
|
+
},
|
|
90
|
+
findingId: {
|
|
91
|
+
type: 'string',
|
|
92
|
+
description: 'Security finding id for security_finding mode.',
|
|
93
|
+
},
|
|
94
|
+
bundlePath: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Workspace-relative bundle JSON path for support_bundle mode.',
|
|
97
|
+
},
|
|
98
|
+
mediaProviderId: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Voice or media provider id for media_provider mode.',
|
|
101
|
+
},
|
|
102
|
+
sessionId: {
|
|
103
|
+
type: 'string',
|
|
104
|
+
description: 'Saved session id for session mode.',
|
|
44
105
|
},
|
|
45
106
|
categoryId: {
|
|
46
107
|
type: 'string',
|
|
47
|
-
description: '
|
|
108
|
+
description: 'Workspace category id.',
|
|
48
109
|
},
|
|
49
110
|
surfaceId: {
|
|
50
111
|
type: 'string',
|
|
51
|
-
description: 'UI surface id for ui_surface or open_ui_surface modes.
|
|
112
|
+
description: 'UI surface id for ui_surface or open_ui_surface modes.',
|
|
52
113
|
},
|
|
53
114
|
panelId: {
|
|
54
115
|
type: 'string',
|
|
55
|
-
description: 'Built-in panel id for panel or open_panel modes.
|
|
116
|
+
description: 'Built-in panel id for panel or open_panel modes.',
|
|
56
117
|
},
|
|
57
118
|
actionId: {
|
|
58
119
|
type: 'string',
|
|
59
|
-
description: '
|
|
120
|
+
description: 'Workspace action id or keybinding action id.',
|
|
60
121
|
},
|
|
61
122
|
fields: {
|
|
62
123
|
type: 'object',
|
|
63
124
|
additionalProperties: { type: 'string' },
|
|
64
|
-
description: '
|
|
125
|
+
description: 'Editor field values for run_workspace_action.',
|
|
65
126
|
},
|
|
66
127
|
combo: {
|
|
67
128
|
...KEY_COMBO_PARAMETER_SCHEMA,
|
|
68
|
-
description: 'Single key combo for set_keybinding
|
|
129
|
+
description: 'Single key combo for set_keybinding.',
|
|
69
130
|
},
|
|
70
131
|
combos: {
|
|
71
132
|
type: 'array',
|
|
@@ -74,11 +135,11 @@ export const AGENT_HARNESS_PARAMETER_PROPERTIES = {
|
|
|
74
135
|
},
|
|
75
136
|
recordId: {
|
|
76
137
|
type: 'string',
|
|
77
|
-
description: 'Selected Agent-local record id
|
|
138
|
+
description: 'Selected Agent-local record id.',
|
|
78
139
|
},
|
|
79
140
|
key: {
|
|
80
141
|
type: 'string',
|
|
81
|
-
description: 'Agent setting key
|
|
142
|
+
description: 'Agent setting key.',
|
|
82
143
|
},
|
|
83
144
|
value: {
|
|
84
145
|
anyOf: [
|
|
@@ -86,23 +147,39 @@ export const AGENT_HARNESS_PARAMETER_PROPERTIES = {
|
|
|
86
147
|
{ type: 'number' },
|
|
87
148
|
{ type: 'boolean' },
|
|
88
149
|
],
|
|
89
|
-
description: 'Setting value
|
|
150
|
+
description: 'Setting value, or visible search text for shortcut routes.',
|
|
90
151
|
},
|
|
91
152
|
target: {
|
|
92
153
|
type: 'string',
|
|
93
|
-
description: '
|
|
154
|
+
description: 'Generic lookup target for single-item modes.',
|
|
155
|
+
},
|
|
156
|
+
methodId: {
|
|
157
|
+
type: 'string',
|
|
158
|
+
description: 'Public operator or Agent Knowledge method id.',
|
|
159
|
+
},
|
|
160
|
+
endpointId: {
|
|
161
|
+
type: 'string',
|
|
162
|
+
description: 'Connected service endpoint id.',
|
|
163
|
+
},
|
|
164
|
+
artifactId: {
|
|
165
|
+
type: 'string',
|
|
166
|
+
description: 'Release evidence artifact id.',
|
|
167
|
+
},
|
|
168
|
+
itemId: {
|
|
169
|
+
type: 'string',
|
|
170
|
+
description: 'Release readiness item id for mode release_readiness_item.',
|
|
94
171
|
},
|
|
95
172
|
capabilityId: {
|
|
96
173
|
type: 'string',
|
|
97
|
-
description: 'Connected-host
|
|
174
|
+
description: 'Connected-host capability id.',
|
|
98
175
|
},
|
|
99
176
|
toolName: {
|
|
100
177
|
type: 'string',
|
|
101
|
-
description: 'First-class model tool name
|
|
178
|
+
description: 'First-class model tool name.',
|
|
102
179
|
},
|
|
103
180
|
category: {
|
|
104
181
|
type: 'string',
|
|
105
|
-
description: 'Setting category filter
|
|
182
|
+
description: 'Setting category filter.',
|
|
106
183
|
},
|
|
107
184
|
prefix: {
|
|
108
185
|
type: 'string',
|
|
@@ -110,11 +187,11 @@ export const AGENT_HARNESS_PARAMETER_PROPERTIES = {
|
|
|
110
187
|
},
|
|
111
188
|
includeHidden: {
|
|
112
189
|
type: 'boolean',
|
|
113
|
-
description: 'Include
|
|
190
|
+
description: 'Include hidden settings in settings mode.',
|
|
114
191
|
},
|
|
115
192
|
includeParameters: {
|
|
116
193
|
type: 'boolean',
|
|
117
|
-
description: 'Include
|
|
194
|
+
description: 'Include optional detail for discovery modes.',
|
|
118
195
|
},
|
|
119
196
|
limit: {
|
|
120
197
|
type: 'number',
|
|
@@ -123,14 +200,14 @@ export const AGENT_HARNESS_PARAMETER_PROPERTIES = {
|
|
|
123
200
|
pane: {
|
|
124
201
|
type: 'string',
|
|
125
202
|
enum: ['top', 'bottom'],
|
|
126
|
-
description: 'Preferred
|
|
203
|
+
description: 'Preferred pane for open_panel.',
|
|
127
204
|
},
|
|
128
205
|
confirm: {
|
|
129
206
|
type: 'boolean',
|
|
130
|
-
description: 'Required true for
|
|
207
|
+
description: 'Required true for confirmed harness effects.',
|
|
131
208
|
},
|
|
132
209
|
explicitUserRequest: {
|
|
133
210
|
type: 'string',
|
|
134
|
-
description: '
|
|
211
|
+
description: 'User request authorizing a confirmed harness effect.',
|
|
135
212
|
},
|
|
136
213
|
} as const;
|