@pellux/goodvibes-agent 0.1.56 → 0.1.58
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/.goodvibes/GOODVIBES.md +1 -1
- package/CHANGELOG.md +18 -9
- package/README.md +3 -3
- package/docs/README.md +1 -1
- package/docs/getting-started.md +3 -3
- package/docs/release-and-publishing.md +2 -2
- package/package.json +1 -3
- package/src/agent/routine-schedule-args.ts +219 -0
- package/src/agent/routine-schedule-format.ts +173 -0
- package/src/agent/routine-schedule-promotion.ts +3 -811
- package/src/agent/routine-schedule-receipts.ts +502 -0
- package/src/cli/agent-knowledge-command.ts +6 -6
- package/src/cli/help.ts +3 -25
- package/src/cli/package-verification.ts +23 -16
- package/src/cli/redaction.ts +4 -1
- package/src/cli/routines-command.ts +10 -6
- package/src/cli/service-posture.ts +47 -280
- package/src/cli/status.ts +0 -1
- package/src/cli/tui-startup.ts +23 -0
- package/src/config/secret-config.ts +0 -2
- package/src/input/agent-workspace-categories.ts +219 -0
- package/src/input/agent-workspace-editors.ts +143 -0
- package/src/input/agent-workspace-snapshot.ts +265 -0
- package/src/input/agent-workspace-types.ts +142 -0
- package/src/input/agent-workspace.ts +22 -766
- package/src/input/commands/agent-runtime-profile-runtime.ts +1 -1
- package/src/input/commands/delegation-runtime.ts +1 -1
- package/src/input/commands/experience-runtime.ts +3 -4
- package/src/input/commands/guidance-runtime.ts +1 -2
- package/src/input/commands/health-runtime.ts +3 -65
- package/src/input/commands/knowledge.ts +7 -7
- package/src/input/commands/local-setup-review.ts +0 -61
- package/src/input/commands/local-setup-transfer.ts +0 -3
- package/src/input/commands/local-setup.ts +2 -15
- package/src/input/commands/planning-runtime.ts +4 -1
- package/src/input/commands/platform-access-runtime.ts +1 -10
- package/src/input/commands/platform-services-runtime.ts +0 -1
- package/src/input/commands/recall-query.ts +1 -1
- package/src/input/commands/routines-runtime.ts +10 -6
- package/src/input/commands/schedule-runtime.ts +10 -6
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +1 -14
- package/src/input/commands.ts +0 -4
- package/src/input/handler-onboarding.ts +10 -120
- package/src/input/onboarding/onboarding-wizard-apply.ts +5 -196
- package/src/input/onboarding/onboarding-wizard-constants.ts +8 -119
- package/src/input/onboarding/onboarding-wizard-helpers.ts +2 -53
- package/src/input/onboarding/onboarding-wizard-rules.ts +2 -236
- package/src/input/onboarding/onboarding-wizard-state.ts +1 -69
- package/src/input/onboarding/onboarding-wizard-steps.ts +584 -737
- package/src/input/onboarding/onboarding-wizard-types.ts +8 -26
- package/src/input/onboarding/onboarding-wizard.ts +4 -109
- package/src/input/settings-modal-agent-policy.ts +10 -0
- package/src/input/settings-modal-types.ts +2 -4
- package/src/input/settings-modal.ts +3 -1
- package/src/input/submission-router.ts +0 -1
- package/src/main.ts +13 -12
- package/src/panels/approval-panel.ts +1 -2
- package/src/panels/builtin/operations.ts +1 -2
- package/src/panels/knowledge-panel.ts +2 -2
- package/src/panels/project-planning-panel.ts +4 -1
- package/src/panels/provider-health-domains.ts +0 -22
- package/src/panels/provider-health-panel.ts +1 -5
- package/src/panels/session-browser-panel.ts +0 -5
- package/src/panels/tasks-panel.ts +2 -64
- package/src/renderer/agent-workspace.ts +1 -1
- package/src/renderer/help-overlay.ts +1 -2
- package/src/renderer/semantic-diff.ts +1 -1
- package/src/renderer/settings-modal-helpers.ts +0 -16
- package/src/renderer/settings-modal.ts +3 -5
- package/src/runtime/bootstrap-hook-bridge.ts +0 -3
- package/src/runtime/bootstrap-shell.ts +2 -1
- package/src/runtime/bootstrap.ts +1 -1
- package/src/runtime/index.ts +0 -1
- package/src/runtime/onboarding/derivation.ts +1 -28
- package/src/runtime/onboarding/snapshot.ts +0 -1
- package/src/runtime/onboarding/types.ts +1 -4
- package/src/runtime/services.ts +4 -23
- package/src/runtime/ui-read-models.ts +4 -3
- package/src/shell/service-settings-sync.ts +15 -244
- package/src/tools/agent-context-policy.ts +1 -1
- package/src/tools/wrfc-agent-guard.ts +3 -3
- package/src/verification/live-verifier.ts +11 -5
- package/src/verification/verification-ledger.ts +3 -6
- package/src/version.ts +1 -1
- package/src/input/commands/agent-externalized-tui.ts +0 -73
- package/src/input/commands/cloudflare-runtime.ts +0 -385
- package/src/input/handler-onboarding-cloudflare.ts +0 -322
- package/src/input/onboarding/onboarding-runtime-status.ts +0 -87
- package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +0 -494
- package/src/input/onboarding/onboarding-wizard-cloudflare.ts +0 -199
- package/src/input/onboarding/onboarding-wizard-external-surface-extra-specs.ts +0 -130
- package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +0 -762
- package/src/runtime/cloudflare-control-plane.ts +0 -350
- package/src/runtime/sandbox-public-gaps.ts +0 -358
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { basename, sep } from 'node:path';
|
|
2
|
+
import type { CommandContext } from './command-registry.ts';
|
|
3
|
+
import { AgentPersonaRegistry, type AgentPersonaRecord } from '../agent/persona-registry.ts';
|
|
4
|
+
import { AgentRoutineRegistry, type AgentRoutineRecord } from '../agent/routine-registry.ts';
|
|
5
|
+
import { AgentSkillRegistry, type AgentSkillRecord } from '../agent/skill-registry.ts';
|
|
6
|
+
import { getAgentRuntimeProfilesRoot, listAgentRuntimeProfiles, listAgentRuntimeProfileTemplates } from '../agent/runtime-profile.ts';
|
|
7
|
+
import { buildAgentWorkspaceChannels } from './agent-workspace-channels.ts';
|
|
8
|
+
import { buildAgentWorkspaceSetupChecklist } from './agent-workspace-setup.ts';
|
|
9
|
+
import type { AgentWorkspaceLocalLibraryItem, AgentWorkspaceRuntimeSnapshot } from './agent-workspace-types.ts';
|
|
10
|
+
|
|
11
|
+
type AgentWorkspaceConfigReader = {
|
|
12
|
+
get(key: string): unknown;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
function readConfigString(context: CommandContext, key: string, fallback: string): string {
|
|
16
|
+
try {
|
|
17
|
+
const configManager = context.platform?.configManager as unknown as AgentWorkspaceConfigReader | undefined;
|
|
18
|
+
const value = configManager?.get(key);
|
|
19
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : fallback;
|
|
20
|
+
} catch {
|
|
21
|
+
return fallback;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function readConfigNumber(context: CommandContext, key: string, fallback: number): number {
|
|
26
|
+
try {
|
|
27
|
+
const configManager = context.platform?.configManager as unknown as AgentWorkspaceConfigReader | undefined;
|
|
28
|
+
const value = configManager?.get(key);
|
|
29
|
+
const numberValue = typeof value === 'number' ? value : Number(value);
|
|
30
|
+
return Number.isFinite(numberValue) ? numberValue : fallback;
|
|
31
|
+
} catch {
|
|
32
|
+
return fallback;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function readConfigBoolean(context: CommandContext, key: string, fallback: boolean): boolean {
|
|
37
|
+
try {
|
|
38
|
+
const configManager = context.platform?.configManager as unknown as AgentWorkspaceConfigReader | undefined;
|
|
39
|
+
const value = configManager?.get(key);
|
|
40
|
+
if (typeof value === 'boolean') return value;
|
|
41
|
+
if (typeof value === 'string') {
|
|
42
|
+
const normalized = value.trim().toLowerCase();
|
|
43
|
+
if (normalized === 'true') return true;
|
|
44
|
+
if (normalized === 'false') return false;
|
|
45
|
+
}
|
|
46
|
+
return fallback;
|
|
47
|
+
} catch {
|
|
48
|
+
return fallback;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function inferActiveRuntimeProfile(homeDirectory: string): string {
|
|
53
|
+
const marker = `${sep}.goodvibes${sep}agent${sep}profile-homes${sep}`;
|
|
54
|
+
return homeDirectory.includes(marker) ? basename(homeDirectory) : '(default home)';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function summarizePersonaItem(persona: AgentPersonaRecord, activePersonaId: string | null): AgentWorkspaceLocalLibraryItem {
|
|
58
|
+
return {
|
|
59
|
+
id: persona.id,
|
|
60
|
+
name: persona.name,
|
|
61
|
+
description: persona.description,
|
|
62
|
+
reviewState: persona.reviewState,
|
|
63
|
+
source: persona.source,
|
|
64
|
+
tags: persona.tags,
|
|
65
|
+
triggers: persona.triggers,
|
|
66
|
+
active: persona.id === activePersonaId,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function summarizeSkillItem(skill: AgentSkillRecord): AgentWorkspaceLocalLibraryItem {
|
|
71
|
+
return {
|
|
72
|
+
id: skill.id,
|
|
73
|
+
name: skill.name,
|
|
74
|
+
description: skill.description,
|
|
75
|
+
reviewState: skill.reviewState,
|
|
76
|
+
source: skill.source,
|
|
77
|
+
tags: skill.tags,
|
|
78
|
+
triggers: skill.triggers,
|
|
79
|
+
enabled: skill.enabled,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function summarizeRoutineItem(routine: AgentRoutineRecord): AgentWorkspaceLocalLibraryItem {
|
|
84
|
+
return {
|
|
85
|
+
id: routine.id,
|
|
86
|
+
name: routine.name,
|
|
87
|
+
description: routine.description,
|
|
88
|
+
reviewState: routine.reviewState,
|
|
89
|
+
source: routine.source,
|
|
90
|
+
tags: routine.tags,
|
|
91
|
+
triggers: routine.triggers,
|
|
92
|
+
enabled: routine.enabled,
|
|
93
|
+
startCount: routine.startCount,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): AgentWorkspaceRuntimeSnapshot {
|
|
98
|
+
const host = readConfigString(context, 'controlPlane.host', '127.0.0.1');
|
|
99
|
+
const port = readConfigNumber(context, 'controlPlane.port', 3421);
|
|
100
|
+
const model = context.session?.runtime?.model ?? 'unknown';
|
|
101
|
+
const provider = context.session?.runtime?.provider ?? 'unknown';
|
|
102
|
+
const currentModel = (() => {
|
|
103
|
+
try {
|
|
104
|
+
return context.provider?.providerRegistry?.getCurrentModel?.();
|
|
105
|
+
} catch {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
})();
|
|
109
|
+
const sessionMemoryCount = (() => {
|
|
110
|
+
try {
|
|
111
|
+
return context.session?.sessionMemoryStore?.list?.().length ?? 0;
|
|
112
|
+
} catch {
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
})();
|
|
116
|
+
const personaSnapshot = (() => {
|
|
117
|
+
try {
|
|
118
|
+
const shellPaths = context.workspace?.shellPaths;
|
|
119
|
+
if (!shellPaths) return { count: 0, activeName: '(none)', items: [] };
|
|
120
|
+
const snapshot = AgentPersonaRegistry.fromShellPaths(shellPaths).snapshot();
|
|
121
|
+
return {
|
|
122
|
+
count: snapshot.personas.length,
|
|
123
|
+
activeName: snapshot.activePersona?.name ?? '(none)',
|
|
124
|
+
items: snapshot.personas.map((persona) => summarizePersonaItem(persona, snapshot.activePersonaId)),
|
|
125
|
+
};
|
|
126
|
+
} catch {
|
|
127
|
+
return { count: 0, activeName: '(unavailable)', items: [] };
|
|
128
|
+
}
|
|
129
|
+
})();
|
|
130
|
+
const skillSnapshot = (() => {
|
|
131
|
+
try {
|
|
132
|
+
const shellPaths = context.workspace?.shellPaths;
|
|
133
|
+
if (!shellPaths) return { count: 0, enabled: 0, items: [] };
|
|
134
|
+
const snapshot = AgentSkillRegistry.fromShellPaths(shellPaths).snapshot();
|
|
135
|
+
return {
|
|
136
|
+
count: snapshot.skills.length,
|
|
137
|
+
enabled: snapshot.enabledSkills.length,
|
|
138
|
+
items: snapshot.skills.map(summarizeSkillItem),
|
|
139
|
+
};
|
|
140
|
+
} catch {
|
|
141
|
+
return { count: 0, enabled: 0, items: [] };
|
|
142
|
+
}
|
|
143
|
+
})();
|
|
144
|
+
const routineSnapshot = (() => {
|
|
145
|
+
try {
|
|
146
|
+
const shellPaths = context.workspace?.shellPaths;
|
|
147
|
+
if (!shellPaths) return { count: 0, enabled: 0, items: [] };
|
|
148
|
+
const snapshot = AgentRoutineRegistry.fromShellPaths(shellPaths).snapshot();
|
|
149
|
+
return {
|
|
150
|
+
count: snapshot.routines.length,
|
|
151
|
+
enabled: snapshot.enabledRoutines.length,
|
|
152
|
+
items: snapshot.routines.map(summarizeRoutineItem),
|
|
153
|
+
};
|
|
154
|
+
} catch {
|
|
155
|
+
return { count: 0, enabled: 0, items: [] };
|
|
156
|
+
}
|
|
157
|
+
})();
|
|
158
|
+
const runtimeProfiles = (() => {
|
|
159
|
+
try {
|
|
160
|
+
return listAgentRuntimeProfiles(context.workspace?.shellPaths?.homeDirectory ?? '');
|
|
161
|
+
} catch {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
})();
|
|
165
|
+
const configProfileCount = (() => {
|
|
166
|
+
try {
|
|
167
|
+
return context.workspace?.profileManager?.list?.().length ?? 0;
|
|
168
|
+
} catch {
|
|
169
|
+
return 0;
|
|
170
|
+
}
|
|
171
|
+
})();
|
|
172
|
+
const runtimeStarterTemplates = (() => {
|
|
173
|
+
try {
|
|
174
|
+
return listAgentRuntimeProfileTemplates(context.workspace?.shellPaths?.homeDirectory ?? '');
|
|
175
|
+
} catch {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
})();
|
|
179
|
+
const voiceProviders = (() => {
|
|
180
|
+
try {
|
|
181
|
+
return context.platform?.voiceProviderRegistry?.list?.() ?? [];
|
|
182
|
+
} catch {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
})();
|
|
186
|
+
const mediaProviders = (() => {
|
|
187
|
+
try {
|
|
188
|
+
return context.platform?.mediaProviderRegistry?.list?.() ?? [];
|
|
189
|
+
} catch {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
})();
|
|
193
|
+
const warnings: string[] = [];
|
|
194
|
+
if (provider === 'unknown' || model === 'unknown') warnings.push('Provider/model unavailable in this runtime context.');
|
|
195
|
+
if (!context.executeCommand) warnings.push('Command dispatch is unavailable; workspace actions will show guidance only.');
|
|
196
|
+
const ttsProvider = readConfigString(context, 'tts.provider', '(provider default)');
|
|
197
|
+
const ttsVoice = readConfigString(context, 'tts.voice', '(voice default)');
|
|
198
|
+
const ttsLlmProvider = readConfigString(context, 'tts.llmProvider', '');
|
|
199
|
+
const ttsLlmModel = readConfigString(context, 'tts.llmModel', '');
|
|
200
|
+
const daemonBaseUrl = `http://${host}:${port}`;
|
|
201
|
+
const channels = buildAgentWorkspaceChannels(context);
|
|
202
|
+
const setupChecklist = buildAgentWorkspaceSetupChecklist({
|
|
203
|
+
provider,
|
|
204
|
+
model,
|
|
205
|
+
daemonBaseUrl,
|
|
206
|
+
sessionMemoryCount,
|
|
207
|
+
routineCount: routineSnapshot.count,
|
|
208
|
+
enabledRoutineCount: routineSnapshot.enabled,
|
|
209
|
+
skillCount: skillSnapshot.count,
|
|
210
|
+
enabledSkillCount: skillSnapshot.enabled,
|
|
211
|
+
activePersonaName: personaSnapshot.activeName,
|
|
212
|
+
readyChannelCount: channels.filter((channel) => channel.ready).length,
|
|
213
|
+
voiceProviderCount: voiceProviders.length,
|
|
214
|
+
mediaProviderCount: mediaProviders.length,
|
|
215
|
+
runtimeProfileCount: runtimeProfiles.length,
|
|
216
|
+
runtimeStarterTemplateCount: runtimeStarterTemplates.length,
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
return {
|
|
220
|
+
provider,
|
|
221
|
+
model,
|
|
222
|
+
modelDisplayName: currentModel?.displayName ?? model,
|
|
223
|
+
sessionId: context.session?.runtime?.sessionId ?? 'unknown',
|
|
224
|
+
workingDirectory: context.workspace?.shellPaths?.workingDirectory ?? 'unavailable',
|
|
225
|
+
homeDirectory: context.workspace?.shellPaths?.homeDirectory ?? 'unavailable',
|
|
226
|
+
daemonBaseUrl,
|
|
227
|
+
daemonOwnership: 'external',
|
|
228
|
+
sessionMemoryCount,
|
|
229
|
+
localRoutineCount: routineSnapshot.count,
|
|
230
|
+
enabledRoutineCount: routineSnapshot.enabled,
|
|
231
|
+
localRoutines: routineSnapshot.items,
|
|
232
|
+
localSkillCount: skillSnapshot.count,
|
|
233
|
+
enabledSkillCount: skillSnapshot.enabled,
|
|
234
|
+
localSkills: skillSnapshot.items,
|
|
235
|
+
localPersonaCount: personaSnapshot.count,
|
|
236
|
+
activePersonaName: personaSnapshot.activeName,
|
|
237
|
+
localPersonas: personaSnapshot.items,
|
|
238
|
+
knowledgeRoute: '/api/goodvibes-agent/knowledge',
|
|
239
|
+
knowledgeIsolation: 'agent-only',
|
|
240
|
+
executionPolicy: 'serial-proactive',
|
|
241
|
+
wrfcPolicy: 'explicit-build-delegation-only',
|
|
242
|
+
channels,
|
|
243
|
+
voiceProviderCount: voiceProviders.length,
|
|
244
|
+
voiceStreamingProviderCount: voiceProviders.filter((entry) => entry.capabilities.includes('tts-stream')).length,
|
|
245
|
+
voiceSttProviderCount: voiceProviders.filter((entry) => entry.capabilities.includes('stt')).length,
|
|
246
|
+
voiceRealtimeProviderCount: voiceProviders.filter((entry) => entry.capabilities.includes('realtime')).length,
|
|
247
|
+
ttsProvider,
|
|
248
|
+
ttsVoice,
|
|
249
|
+
ttsResponseModel: ttsLlmProvider && ttsLlmModel ? `${ttsLlmProvider}/${ttsLlmModel}` : '(chat route)',
|
|
250
|
+
voiceSurfaceEnabled: readConfigBoolean(context, 'ui.voiceEnabled', false),
|
|
251
|
+
mediaProviderCount: mediaProviders.length,
|
|
252
|
+
mediaUnderstandingProviderCount: mediaProviders.filter((entry) => entry.capabilities.includes('understand')).length,
|
|
253
|
+
mediaGenerationProviderCount: mediaProviders.filter((entry) => entry.capabilities.includes('generate')).length,
|
|
254
|
+
browserSurfaceEnabled: readConfigBoolean(context, 'web.enabled', false),
|
|
255
|
+
browserSurfacePublicBaseUrl: readConfigString(context, 'web.publicBaseUrl', '(not configured)'),
|
|
256
|
+
activeRuntimeProfile: inferActiveRuntimeProfile(context.workspace?.shellPaths?.homeDirectory ?? ''),
|
|
257
|
+
runtimeProfileCount: runtimeProfiles.length,
|
|
258
|
+
runtimeProfileRoot: getAgentRuntimeProfilesRoot(context.workspace?.shellPaths?.homeDirectory ?? ''),
|
|
259
|
+
runtimeStarterTemplateCount: runtimeStarterTemplates.length,
|
|
260
|
+
localStarterTemplateCount: runtimeStarterTemplates.filter((template) => template.source === 'local').length,
|
|
261
|
+
configProfileCount,
|
|
262
|
+
setupChecklist,
|
|
263
|
+
warnings,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { AgentWorkspaceChannelStatus } from './agent-workspace-channels.ts';
|
|
2
|
+
import type { AgentWorkspaceSetupChecklistItem } from './agent-workspace-setup.ts';
|
|
3
|
+
|
|
4
|
+
export const AGENT_WORKSPACE_MODAL_NAME = 'agentWorkspace';
|
|
5
|
+
|
|
6
|
+
export type AgentWorkspaceFocusPane = 'categories' | 'actions';
|
|
7
|
+
|
|
8
|
+
export type AgentWorkspaceActionKind = 'command' | 'guidance' | 'workspace' | 'editor' | 'local-selection' | 'local-operation';
|
|
9
|
+
|
|
10
|
+
export type AgentWorkspaceLocalEditorKind = 'persona' | 'skill' | 'routine';
|
|
11
|
+
|
|
12
|
+
export type AgentWorkspaceLocalOperation =
|
|
13
|
+
| 'persona-edit'
|
|
14
|
+
| 'persona-use'
|
|
15
|
+
| 'persona-review'
|
|
16
|
+
| 'persona-clear'
|
|
17
|
+
| 'persona-delete'
|
|
18
|
+
| 'skill-edit'
|
|
19
|
+
| 'skill-enable'
|
|
20
|
+
| 'skill-disable'
|
|
21
|
+
| 'skill-review'
|
|
22
|
+
| 'skill-delete'
|
|
23
|
+
| 'routine-edit'
|
|
24
|
+
| 'routine-start'
|
|
25
|
+
| 'routine-enable'
|
|
26
|
+
| 'routine-disable'
|
|
27
|
+
| 'routine-review'
|
|
28
|
+
| 'routine-delete';
|
|
29
|
+
|
|
30
|
+
export interface AgentWorkspaceEditorField {
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly label: string;
|
|
33
|
+
readonly value: string;
|
|
34
|
+
readonly required: boolean;
|
|
35
|
+
readonly multiline: boolean;
|
|
36
|
+
readonly hint: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface AgentWorkspaceLocalEditor {
|
|
40
|
+
readonly kind: AgentWorkspaceLocalEditorKind;
|
|
41
|
+
readonly mode: 'create' | 'update' | 'delete';
|
|
42
|
+
readonly recordId?: string;
|
|
43
|
+
readonly title: string;
|
|
44
|
+
readonly fields: readonly AgentWorkspaceEditorField[];
|
|
45
|
+
readonly selectedFieldIndex: number;
|
|
46
|
+
readonly message: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface AgentWorkspaceAction {
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly label: string;
|
|
52
|
+
readonly detail: string;
|
|
53
|
+
readonly command?: string;
|
|
54
|
+
readonly targetCategoryId?: string;
|
|
55
|
+
readonly editorKind?: AgentWorkspaceLocalEditorKind;
|
|
56
|
+
readonly localKind?: AgentWorkspaceLocalEditorKind;
|
|
57
|
+
readonly selectionDelta?: number;
|
|
58
|
+
readonly localOperation?: AgentWorkspaceLocalOperation;
|
|
59
|
+
readonly kind: AgentWorkspaceActionKind;
|
|
60
|
+
readonly safety: 'safe' | 'read-only' | 'delegates' | 'blocked';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface AgentWorkspaceCategory {
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly group: string;
|
|
66
|
+
readonly label: string;
|
|
67
|
+
readonly summary: string;
|
|
68
|
+
readonly detail: string;
|
|
69
|
+
readonly actions: readonly AgentWorkspaceAction[];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type AgentWorkspaceCommandDispatcher = (command: string) => void;
|
|
73
|
+
|
|
74
|
+
export type AgentWorkspaceActionResultKind = 'guidance' | 'blocked' | 'dispatched' | 'refreshed' | 'error';
|
|
75
|
+
|
|
76
|
+
export interface AgentWorkspaceActionResult {
|
|
77
|
+
readonly kind: AgentWorkspaceActionResultKind;
|
|
78
|
+
readonly title: string;
|
|
79
|
+
readonly detail: string;
|
|
80
|
+
readonly command?: string;
|
|
81
|
+
readonly safety?: AgentWorkspaceAction['safety'];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface AgentWorkspaceLocalLibraryItem {
|
|
85
|
+
readonly id: string;
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly description: string;
|
|
88
|
+
readonly reviewState: string;
|
|
89
|
+
readonly source: string;
|
|
90
|
+
readonly tags: readonly string[];
|
|
91
|
+
readonly triggers: readonly string[];
|
|
92
|
+
readonly active?: boolean;
|
|
93
|
+
readonly enabled?: boolean;
|
|
94
|
+
readonly startCount?: number;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface AgentWorkspaceRuntimeSnapshot {
|
|
98
|
+
readonly provider: string;
|
|
99
|
+
readonly model: string;
|
|
100
|
+
readonly modelDisplayName: string;
|
|
101
|
+
readonly sessionId: string;
|
|
102
|
+
readonly workingDirectory: string;
|
|
103
|
+
readonly homeDirectory: string;
|
|
104
|
+
readonly daemonBaseUrl: string;
|
|
105
|
+
readonly daemonOwnership: 'external';
|
|
106
|
+
readonly sessionMemoryCount: number;
|
|
107
|
+
readonly localRoutineCount: number;
|
|
108
|
+
readonly enabledRoutineCount: number;
|
|
109
|
+
readonly localRoutines: readonly AgentWorkspaceLocalLibraryItem[];
|
|
110
|
+
readonly localSkillCount: number;
|
|
111
|
+
readonly enabledSkillCount: number;
|
|
112
|
+
readonly localSkills: readonly AgentWorkspaceLocalLibraryItem[];
|
|
113
|
+
readonly localPersonaCount: number;
|
|
114
|
+
readonly activePersonaName: string;
|
|
115
|
+
readonly localPersonas: readonly AgentWorkspaceLocalLibraryItem[];
|
|
116
|
+
readonly knowledgeRoute: '/api/goodvibes-agent/knowledge';
|
|
117
|
+
readonly knowledgeIsolation: 'agent-only';
|
|
118
|
+
readonly executionPolicy: 'serial-proactive';
|
|
119
|
+
readonly wrfcPolicy: 'explicit-build-delegation-only';
|
|
120
|
+
readonly channels: readonly AgentWorkspaceChannelStatus[];
|
|
121
|
+
readonly voiceProviderCount: number;
|
|
122
|
+
readonly voiceStreamingProviderCount: number;
|
|
123
|
+
readonly voiceSttProviderCount: number;
|
|
124
|
+
readonly voiceRealtimeProviderCount: number;
|
|
125
|
+
readonly ttsProvider: string;
|
|
126
|
+
readonly ttsVoice: string;
|
|
127
|
+
readonly ttsResponseModel: string;
|
|
128
|
+
readonly voiceSurfaceEnabled: boolean;
|
|
129
|
+
readonly mediaProviderCount: number;
|
|
130
|
+
readonly mediaUnderstandingProviderCount: number;
|
|
131
|
+
readonly mediaGenerationProviderCount: number;
|
|
132
|
+
readonly browserSurfaceEnabled: boolean;
|
|
133
|
+
readonly browserSurfacePublicBaseUrl: string;
|
|
134
|
+
readonly activeRuntimeProfile: string;
|
|
135
|
+
readonly runtimeProfileCount: number;
|
|
136
|
+
readonly runtimeProfileRoot: string;
|
|
137
|
+
readonly runtimeStarterTemplateCount: number;
|
|
138
|
+
readonly localStarterTemplateCount: number;
|
|
139
|
+
readonly configProfileCount: number;
|
|
140
|
+
readonly setupChecklist: readonly AgentWorkspaceSetupChecklistItem[];
|
|
141
|
+
readonly warnings: readonly string[];
|
|
142
|
+
}
|