@pellux/goodvibes-tui 0.18.12 → 0.18.13
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 +50 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +1 -138
- package/src/config/subscription-providers.ts +1 -127
- package/src/core/conversation-rendering.ts +3 -3
- package/src/core/conversation.ts +176 -423
- package/src/core/history.ts +45 -0
- package/src/core/orchestrator.ts +3 -735
- package/src/core/system-message-router.ts +19 -58
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed.ts +1 -1
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/search.ts +1 -1
- package/src/input/selection.ts +2 -2
- package/src/main.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +3 -3
- package/src/panels/agent-logs-panel.ts +3 -3
- package/src/panels/approval-panel.ts +2 -2
- package/src/panels/automation-control-panel.ts +3 -3
- package/src/panels/base-panel.ts +14 -14
- package/src/panels/builtin/operations.ts +1 -1
- package/src/panels/builtin/session.ts +1 -1
- package/src/panels/builtin/shared.ts +3 -3
- package/src/panels/cockpit-panel.ts +2 -2
- package/src/panels/communication-panel.ts +3 -3
- package/src/panels/context-visualizer-panel.ts +2 -2
- package/src/panels/control-plane-panel.ts +3 -3
- package/src/panels/cost-tracker-panel.ts +3 -3
- package/src/panels/debug-panel.ts +2 -2
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/docs-panel.ts +1 -1
- package/src/panels/eval-panel.ts +2 -2
- package/src/panels/file-explorer-panel.ts +3 -3
- package/src/panels/file-preview-panel.ts +3 -3
- package/src/panels/forensics-panel.ts +2 -2
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hooks-panel.ts +3 -3
- package/src/panels/incident-review-panel.ts +1 -1
- package/src/panels/intelligence-panel.ts +2 -2
- package/src/panels/knowledge-panel.ts +1 -1
- package/src/panels/local-auth-panel.ts +2 -2
- package/src/panels/marketplace-panel.ts +1 -1
- package/src/panels/mcp-panel.ts +3 -3
- package/src/panels/memory-panel.ts +1 -1
- package/src/panels/ops-control-panel.ts +3 -3
- package/src/panels/ops-strategy-panel.ts +2 -2
- package/src/panels/orchestration-panel.ts +2 -2
- package/src/panels/panel-list-panel.ts +6 -6
- package/src/panels/plan-dashboard-panel.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/policy-panel.ts +2 -2
- package/src/panels/polish.ts +3 -3
- package/src/panels/provider-accounts-panel.ts +2 -2
- package/src/panels/provider-health-panel.ts +2 -2
- package/src/panels/provider-stats-panel.ts +3 -3
- package/src/panels/remote-panel.ts +3 -3
- package/src/panels/routes-panel.ts +3 -3
- package/src/panels/sandbox-panel.ts +2 -2
- package/src/panels/schedule-panel.ts +1 -1
- package/src/panels/security-panel.ts +2 -2
- package/src/panels/services-panel.ts +2 -2
- package/src/panels/session-browser-panel.ts +2 -2
- package/src/panels/settings-sync-panel.ts +2 -2
- package/src/panels/skills-panel.ts +6 -6
- package/src/panels/subscription-panel.ts +2 -2
- package/src/panels/symbol-outline-panel.ts +3 -3
- package/src/panels/system-messages-panel.ts +4 -4
- package/src/panels/tasks-panel.ts +2 -2
- package/src/panels/thinking-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +1 -1
- package/src/panels/tool-inspector-panel.ts +3 -3
- package/src/panels/types.ts +5 -5
- package/src/panels/watchers-panel.ts +3 -3
- package/src/panels/welcome-panel.ts +1 -1
- package/src/panels/worktree-panel.ts +2 -2
- package/src/panels/wrfc-panel.ts +3 -3
- package/src/permissions/prompt.ts +3 -22
- package/src/plugins/loader.ts +15 -304
- package/src/renderer/agent-detail-modal.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +2 -2
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/bottom-bar.ts +2 -2
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +2 -2
- package/src/renderer/compositor.ts +2 -2
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +2 -2
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/conversation-surface.ts +2 -2
- package/src/renderer/diff-view.ts +2 -2
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +2 -2
- package/src/renderer/file-tree.ts +2 -2
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/live-tail-modal.ts +1 -1
- package/src/renderer/markdown.ts +2 -2
- package/src/renderer/modal-factory.ts +3 -3
- package/src/renderer/model-picker-overlay.ts +2 -2
- package/src/renderer/overlay-box.ts +2 -2
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-picker-overlay.ts +2 -2
- package/src/renderer/panel-tab-bar.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +2 -2
- package/src/renderer/process-modal.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +2 -2
- package/src/renderer/progress.ts +2 -2
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +2 -2
- package/src/renderer/session-picker-modal.ts +2 -2
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +1 -1
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +2 -2
- package/src/renderer/text-layout.ts +1 -1
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/ui-factory.ts +2 -2
- package/src/runtime/bootstrap-command-context.ts +4 -5
- package/src/runtime/bootstrap-command-parts.ts +1 -3
- package/src/runtime/bootstrap-core.ts +3 -2
- package/src/runtime/bootstrap-hook-bridge.ts +15 -174
- package/src/runtime/bootstrap-shell.ts +4 -4
- package/src/runtime/bootstrap.ts +1 -1
- package/src/runtime/context.ts +4 -20
- package/src/runtime/diagnostics/panels/index.ts +1 -1
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/diagnostics/panels/panel-resources.ts +118 -0
- package/src/runtime/perf/panel-contracts.ts +32 -0
- package/src/runtime/perf/panel-health-monitor.ts +18 -0
- package/src/runtime/services.ts +4 -4
- package/src/runtime/store/domains/conversation.ts +1 -181
- package/src/runtime/store/domains/permissions.ts +1 -143
- package/src/runtime/store/helpers/reducers/conversation.ts +1 -228
- package/src/runtime/store/helpers/reducers/lifecycle.ts +1 -440
- package/src/runtime/store/selectors/index.ts +11 -6
- package/src/runtime/store/state.ts +12 -4
- package/src/runtime/ui-events.ts +46 -0
- package/src/runtime/ui-services.ts +1 -1
- package/src/shell/ui-openers.ts +1 -1
- package/src/tools/index.ts +1 -186
- package/src/types/grid.ts +48 -0
- package/src/utils/clipboard.ts +21 -0
- package/src/utils/splash-lines.ts +1 -1
- package/src/utils/terminal-width.ts +185 -0
- package/src/version.ts +1 -1
- package/src/daemon/facade-composition.ts +0 -398
- package/src/daemon/facade.ts +0 -638
- package/src/daemon/surface-policy.ts +0 -60
- package/src/daemon/types.ts +0 -191
- package/src/runtime/ui-read-models-core.ts +0 -95
- package/src/runtime/ui-read-models-operations.ts +0 -203
|
@@ -1,398 +0,0 @@
|
|
|
1
|
-
import { AgentManager } from '@pellux/goodvibes-sdk/platform/tools/agent/index';
|
|
2
|
-
import { ConfigManager } from '@pellux/goodvibes-sdk/platform/config/manager';
|
|
3
|
-
import { ServiceRegistry } from '../config/service-registry.ts';
|
|
4
|
-
import { UserAuthManager } from '@pellux/goodvibes-sdk/platform/security/user-auth';
|
|
5
|
-
import {
|
|
6
|
-
AutomationDeliveryManager,
|
|
7
|
-
AutomationManager,
|
|
8
|
-
} from '@pellux/goodvibes-sdk/platform/automation/index';
|
|
9
|
-
import { ApprovalBroker, ControlPlaneGateway, SharedSessionBroker } from '@pellux/goodvibes-sdk/platform/control-plane/index';
|
|
10
|
-
import { GatewayMethodCatalog } from '@pellux/goodvibes-sdk/platform/control-plane/index';
|
|
11
|
-
import {
|
|
12
|
-
BuiltinChannelRuntime,
|
|
13
|
-
ChannelReplyPipeline,
|
|
14
|
-
ChannelProviderRuntimeManager,
|
|
15
|
-
ChannelPluginRegistry,
|
|
16
|
-
ChannelPolicyManager,
|
|
17
|
-
RouteBindingManager,
|
|
18
|
-
SurfaceRegistry,
|
|
19
|
-
} from '@pellux/goodvibes-sdk/platform/channels/index';
|
|
20
|
-
import { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
21
|
-
import { createRuntimeStore } from '../runtime/store/index.ts';
|
|
22
|
-
import { PlatformServiceManager } from '@pellux/goodvibes-sdk/platform/daemon/service-manager';
|
|
23
|
-
import { WatcherRegistry } from '@pellux/goodvibes-sdk/platform/watchers/index';
|
|
24
|
-
import { type DistributedPeerAuth } from '@pellux/goodvibes-sdk/platform/runtime/remote/index';
|
|
25
|
-
import { KnowledgeGraphqlService, KnowledgeService } from '@pellux/goodvibes-sdk/platform/knowledge/index';
|
|
26
|
-
import type { IntegrationHelperService } from '@pellux/goodvibes-sdk/platform/runtime/integration/helpers';
|
|
27
|
-
import { DaemonControlPlaneHelper } from '@pellux/goodvibes-sdk/platform/daemon/control-plane';
|
|
28
|
-
import { DaemonSurfaceDeliveryHelper } from '@pellux/goodvibes-sdk/platform/daemon/surface-delivery';
|
|
29
|
-
import { DaemonSurfaceActionHelper } from '@pellux/goodvibes-sdk/platform/daemon/surface-actions';
|
|
30
|
-
import { DaemonTransportEventsHelper } from '@pellux/goodvibes-sdk/platform/daemon/transport-events';
|
|
31
|
-
import { DaemonHttpRouter } from '@pellux/goodvibes-sdk/platform/daemon/http/router';
|
|
32
|
-
import { createRuntimeServices, type RuntimeServices } from '../runtime/services.ts';
|
|
33
|
-
import type { DaemonConfig, PendingSurfaceReply } from './types.ts';
|
|
34
|
-
import type { ResolvedInboundTlsContext } from '@pellux/goodvibes-sdk/platform/runtime/network/index';
|
|
35
|
-
|
|
36
|
-
type JsonBody = Record<string, unknown>;
|
|
37
|
-
|
|
38
|
-
export interface ResolvedDaemonFacadeRuntime {
|
|
39
|
-
readonly configManager: ConfigManager;
|
|
40
|
-
readonly runtimeServices: RuntimeServices;
|
|
41
|
-
readonly integrationHelpers: IntegrationHelperService;
|
|
42
|
-
readonly port: number;
|
|
43
|
-
readonly host: string;
|
|
44
|
-
readonly agentManager: AgentManager;
|
|
45
|
-
readonly userAuth: UserAuthManager;
|
|
46
|
-
readonly automationManager: AutomationManager;
|
|
47
|
-
readonly runtimeBus: RuntimeEventBus;
|
|
48
|
-
readonly runtimeStore: RuntimeServices['runtimeStore'];
|
|
49
|
-
readonly runtimeDispatch: RuntimeServices['runtimeDispatch'];
|
|
50
|
-
readonly controlPlaneGateway: ControlPlaneGateway;
|
|
51
|
-
readonly gatewayMethods: GatewayMethodCatalog;
|
|
52
|
-
readonly sessionBroker: SharedSessionBroker;
|
|
53
|
-
readonly approvalBroker: ApprovalBroker;
|
|
54
|
-
readonly routeBindings: RouteBindingManager;
|
|
55
|
-
readonly deliveryManager: AutomationDeliveryManager;
|
|
56
|
-
readonly surfaceRegistry: SurfaceRegistry;
|
|
57
|
-
readonly channelPolicy: ChannelPolicyManager;
|
|
58
|
-
readonly channelPlugins: ChannelPluginRegistry;
|
|
59
|
-
readonly watcherRegistry: WatcherRegistry;
|
|
60
|
-
readonly platformServiceManager: PlatformServiceManager;
|
|
61
|
-
readonly distributedRuntime: RuntimeServices['distributedRuntime'];
|
|
62
|
-
readonly voiceService: RuntimeServices['voiceService'];
|
|
63
|
-
readonly webSearchService: RuntimeServices['webSearchService'];
|
|
64
|
-
readonly knowledgeService: KnowledgeService;
|
|
65
|
-
readonly knowledgeGraphqlService: KnowledgeGraphqlService;
|
|
66
|
-
readonly mediaProviders: RuntimeServices['mediaProviders'];
|
|
67
|
-
readonly multimodalService: RuntimeServices['multimodalService'];
|
|
68
|
-
readonly artifactStore: RuntimeServices['artifactStore'];
|
|
69
|
-
readonly serviceRegistry: ServiceRegistry;
|
|
70
|
-
readonly serveFactory: typeof Bun.serve;
|
|
71
|
-
readonly githubWebhookSecret: string | null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function resolveDaemonFacadeRuntime(
|
|
75
|
-
config: DaemonConfig,
|
|
76
|
-
fallbackConfigManager?: ConfigManager,
|
|
77
|
-
): ResolvedDaemonFacadeRuntime {
|
|
78
|
-
const ownedWorkingDir = config.runtimeServices?.workingDirectory ?? config.workingDir;
|
|
79
|
-
const ownedHomeDirectory = config.runtimeServices?.homeDirectory ?? config.homeDirectory;
|
|
80
|
-
const configManager = config.configManager ?? fallbackConfigManager ?? config.runtimeServices?.configManager;
|
|
81
|
-
if (!config.runtimeServices && !configManager && (!ownedWorkingDir || !ownedHomeDirectory)) {
|
|
82
|
-
throw new Error('DaemonServer requires explicit runtime services or explicit configManager plus workingDir/homeDirectory ownership.');
|
|
83
|
-
}
|
|
84
|
-
if (!config.runtimeServices && !configManager) {
|
|
85
|
-
throw new Error('DaemonServer requires an explicit ConfigManager or runtimeServices.');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const resolvedConfigManager = configManager ?? config.runtimeServices!.configManager;
|
|
89
|
-
const ownedRuntimeBus = config.runtimeServices?.runtimeBus ?? config.runtimeBus ?? new RuntimeEventBus();
|
|
90
|
-
const runtimeServices = config.runtimeServices ?? createRuntimeServices({
|
|
91
|
-
configManager: resolvedConfigManager,
|
|
92
|
-
runtimeBus: ownedRuntimeBus,
|
|
93
|
-
runtimeStore: createRuntimeStore(),
|
|
94
|
-
getConversationTitle: () => 'goodvibes daemon',
|
|
95
|
-
workingDir: ownedWorkingDir!,
|
|
96
|
-
homeDirectory: ownedHomeDirectory!,
|
|
97
|
-
});
|
|
98
|
-
const runtimeBus = runtimeServices.runtimeBus;
|
|
99
|
-
const runtimeStore = runtimeServices.runtimeStore;
|
|
100
|
-
const controlPlaneGateway = new ControlPlaneGateway({
|
|
101
|
-
runtimeBus,
|
|
102
|
-
runtimeStore,
|
|
103
|
-
server: {
|
|
104
|
-
enabled: false,
|
|
105
|
-
host: config.host ?? String(resolvedConfigManager.get('controlPlane.host') ?? '127.0.0.1'),
|
|
106
|
-
port: config.port ?? Number(resolvedConfigManager.get('controlPlane.port') ?? 3421),
|
|
107
|
-
streamingMode: (resolvedConfigManager.get('controlPlane.streamMode') as import('@pellux/goodvibes-sdk/platform/control-plane/index').ControlPlaneStreamingMode | undefined) ?? 'sse',
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
runtimeServices.knowledgeService.attachRuntimeBus(runtimeBus);
|
|
112
|
-
runtimeServices.routeBindings.attachRuntime({
|
|
113
|
-
runtimeBus,
|
|
114
|
-
runtimeStore,
|
|
115
|
-
});
|
|
116
|
-
runtimeServices.surfaceRegistry.attachRuntime(runtimeStore);
|
|
117
|
-
runtimeServices.watcherRegistry.attachRuntime({
|
|
118
|
-
runtimeBus,
|
|
119
|
-
runtimeStore,
|
|
120
|
-
});
|
|
121
|
-
runtimeServices.automationManager.attachRuntime({
|
|
122
|
-
runtimeBus,
|
|
123
|
-
runtimeStore,
|
|
124
|
-
deliveryManager: runtimeServices.deliveryManager,
|
|
125
|
-
});
|
|
126
|
-
runtimeServices.deliveryManager.setControlPlaneGateway(controlPlaneGateway);
|
|
127
|
-
runtimeServices.approvalBroker.setPublisher(controlPlaneGateway);
|
|
128
|
-
runtimeServices.sessionBroker.setEventPublisher((event, payload) => {
|
|
129
|
-
controlPlaneGateway.publishEvent(event, payload);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
return {
|
|
133
|
-
configManager: resolvedConfigManager,
|
|
134
|
-
runtimeServices,
|
|
135
|
-
integrationHelpers: runtimeServices.integrationHelpers,
|
|
136
|
-
port: config.port ?? Number(resolvedConfigManager.get('controlPlane.port') ?? 3421),
|
|
137
|
-
host: config.host ?? String(resolvedConfigManager.get('controlPlane.host') ?? '127.0.0.1'),
|
|
138
|
-
agentManager: config.agentManager ?? runtimeServices.agentManager,
|
|
139
|
-
userAuth: config.userAuth ?? runtimeServices.localUserAuthManager,
|
|
140
|
-
automationManager: runtimeServices.automationManager,
|
|
141
|
-
runtimeBus,
|
|
142
|
-
runtimeStore,
|
|
143
|
-
runtimeDispatch: runtimeServices.runtimeDispatch,
|
|
144
|
-
controlPlaneGateway,
|
|
145
|
-
gatewayMethods: runtimeServices.gatewayMethods,
|
|
146
|
-
sessionBroker: runtimeServices.sessionBroker,
|
|
147
|
-
approvalBroker: runtimeServices.approvalBroker,
|
|
148
|
-
routeBindings: runtimeServices.routeBindings,
|
|
149
|
-
deliveryManager: runtimeServices.deliveryManager,
|
|
150
|
-
surfaceRegistry: runtimeServices.surfaceRegistry,
|
|
151
|
-
channelPolicy: runtimeServices.channelPolicy,
|
|
152
|
-
channelPlugins: runtimeServices.channelPlugins,
|
|
153
|
-
watcherRegistry: runtimeServices.watcherRegistry,
|
|
154
|
-
platformServiceManager: new PlatformServiceManager(resolvedConfigManager, {
|
|
155
|
-
workingDirectory: runtimeServices.workingDirectory,
|
|
156
|
-
homeDirectory: runtimeServices.homeDirectory,
|
|
157
|
-
surfaceRoot: 'tui',
|
|
158
|
-
}),
|
|
159
|
-
distributedRuntime: runtimeServices.distributedRuntime,
|
|
160
|
-
voiceService: runtimeServices.voiceService,
|
|
161
|
-
webSearchService: runtimeServices.webSearchService,
|
|
162
|
-
knowledgeService: runtimeServices.knowledgeService,
|
|
163
|
-
knowledgeGraphqlService: new KnowledgeGraphqlService(runtimeServices.knowledgeService),
|
|
164
|
-
mediaProviders: runtimeServices.mediaProviders,
|
|
165
|
-
multimodalService: runtimeServices.multimodalService,
|
|
166
|
-
artifactStore: runtimeServices.artifactStore,
|
|
167
|
-
serviceRegistry: runtimeServices.serviceRegistry,
|
|
168
|
-
serveFactory: config.serveFactory ?? Bun.serve,
|
|
169
|
-
githubWebhookSecret: config.githubWebhookSecret ?? process.env.GITHUB_WEBHOOK_SECRET ?? null,
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
export interface DaemonFacadeCollaborators {
|
|
174
|
-
readonly channelReplyPipeline: ChannelReplyPipeline;
|
|
175
|
-
readonly controlPlaneHelper: DaemonControlPlaneHelper;
|
|
176
|
-
readonly surfaceDeliveryHelper: DaemonSurfaceDeliveryHelper;
|
|
177
|
-
readonly surfaceActionHelper: DaemonSurfaceActionHelper;
|
|
178
|
-
readonly transportEventsHelper: DaemonTransportEventsHelper;
|
|
179
|
-
readonly httpRouter: DaemonHttpRouter;
|
|
180
|
-
readonly providerRuntime: ChannelProviderRuntimeManager;
|
|
181
|
-
readonly builtinChannels: BuiltinChannelRuntime;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export interface CreateDaemonFacadeCollaboratorsOptions {
|
|
185
|
-
readonly runtime: ResolvedDaemonFacadeRuntime;
|
|
186
|
-
readonly pendingSurfaceReplies: Map<string, PendingSurfaceReply>;
|
|
187
|
-
readonly authToken: () => string | null;
|
|
188
|
-
readonly trustProxyEnabled: () => boolean;
|
|
189
|
-
readonly dispatchApiRoutes: (req: Request) => Promise<Response | null>;
|
|
190
|
-
readonly parseJsonBody: (req: Request) => Promise<JsonBody | Response>;
|
|
191
|
-
readonly requireAuthenticatedSession: (req: Request) => { username: string; roles: readonly string[] } | null;
|
|
192
|
-
readonly trySpawnAgent: (input: Parameters<AgentManager['spawn']>[0], logLabel?: string, sessionId?: string) => import('@pellux/goodvibes-sdk/platform/tools/agent/index').AgentRecord | Response;
|
|
193
|
-
readonly checkAuth: (req: Request) => boolean;
|
|
194
|
-
readonly extractAuthToken: (req: Request) => string;
|
|
195
|
-
readonly requireAdmin: (req: Request) => Response | null;
|
|
196
|
-
readonly requireRemotePeer: (req: Request, scope?: string) => Promise<DistributedPeerAuth | Response>;
|
|
197
|
-
readonly describeAuthenticatedPrincipal: (token: string) => {
|
|
198
|
-
principalId: string;
|
|
199
|
-
principalKind: 'user' | 'bot' | 'service' | 'token';
|
|
200
|
-
admin: boolean;
|
|
201
|
-
scopes: readonly string[];
|
|
202
|
-
} | null;
|
|
203
|
-
readonly invokeGatewayMethodCall: (input: {
|
|
204
|
-
readonly authToken: string;
|
|
205
|
-
readonly methodId: string;
|
|
206
|
-
readonly query?: Record<string, unknown>;
|
|
207
|
-
readonly body?: unknown;
|
|
208
|
-
readonly context?: {
|
|
209
|
-
readonly principalId?: string;
|
|
210
|
-
readonly principalKind?: 'user' | 'bot' | 'service' | 'token' | 'remote-peer';
|
|
211
|
-
readonly admin?: boolean;
|
|
212
|
-
readonly scopes?: readonly string[];
|
|
213
|
-
readonly clientKind?: string;
|
|
214
|
-
};
|
|
215
|
-
}) => Promise<{ status: number; ok: boolean; body: unknown }>;
|
|
216
|
-
readonly syncSpawnedAgentTask: (record: import('@pellux/goodvibes-sdk/platform/tools/agent/index').AgentRecord, sessionId?: string) => void;
|
|
217
|
-
readonly syncFinishedAgentTask: (record: import('@pellux/goodvibes-sdk/platform/tools/agent/index').AgentRecord) => void;
|
|
218
|
-
readonly surfaceDeliveryEnabled: (surface: 'slack' | 'discord' | 'ntfy' | 'webhook' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix') => boolean;
|
|
219
|
-
readonly signWebhookPayload: (body: string, secret: string) => string;
|
|
220
|
-
readonly handleApprovalAction: (approvalId: string, action: 'claim' | 'approve' | 'deny' | 'cancel', req: Request) => Promise<Response>;
|
|
221
|
-
readonly tlsState: () => ResolvedInboundTlsContext | null;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
export function createDaemonFacadeCollaborators(
|
|
225
|
-
options: CreateDaemonFacadeCollaboratorsOptions,
|
|
226
|
-
): DaemonFacadeCollaborators {
|
|
227
|
-
const { runtime } = options;
|
|
228
|
-
const channelReplyPipeline = new ChannelReplyPipeline({
|
|
229
|
-
channelPlugins: runtime.channelPlugins,
|
|
230
|
-
routeBindings: runtime.routeBindings,
|
|
231
|
-
runtimeBus: runtime.runtimeBus,
|
|
232
|
-
});
|
|
233
|
-
const surfaceDeliveryHelper = new DaemonSurfaceDeliveryHelper({
|
|
234
|
-
pendingSurfaceReplies: options.pendingSurfaceReplies,
|
|
235
|
-
channelReplyPipeline,
|
|
236
|
-
configManager: runtime.configManager,
|
|
237
|
-
serviceRegistry: runtime.serviceRegistry,
|
|
238
|
-
agentManager: runtime.agentManager,
|
|
239
|
-
sessionBroker: runtime.sessionBroker,
|
|
240
|
-
routeBindings: runtime.routeBindings,
|
|
241
|
-
channelPlugins: runtime.channelPlugins,
|
|
242
|
-
authToken: options.authToken,
|
|
243
|
-
surfaceDeliveryEnabled: options.surfaceDeliveryEnabled,
|
|
244
|
-
});
|
|
245
|
-
const surfaceActionHelper = new DaemonSurfaceActionHelper({
|
|
246
|
-
serviceRegistry: runtime.serviceRegistry,
|
|
247
|
-
configManager: runtime.configManager,
|
|
248
|
-
routeBindings: runtime.routeBindings,
|
|
249
|
-
sessionBroker: runtime.sessionBroker,
|
|
250
|
-
channelPolicy: runtime.channelPolicy,
|
|
251
|
-
automationManager: runtime.automationManager,
|
|
252
|
-
agentManager: runtime.agentManager,
|
|
253
|
-
trySpawnAgent: options.trySpawnAgent,
|
|
254
|
-
queueSurfaceReplyFromBinding: (binding, input) => surfaceDeliveryHelper.queueSurfaceReplyFromBinding(binding, input),
|
|
255
|
-
queueWebhookReply: (input) => surfaceDeliveryHelper.queueWebhookReply(input),
|
|
256
|
-
surfaceDeliveryEnabled: options.surfaceDeliveryEnabled,
|
|
257
|
-
signWebhookPayload: options.signWebhookPayload,
|
|
258
|
-
handleApprovalAction: options.handleApprovalAction,
|
|
259
|
-
});
|
|
260
|
-
const controlPlaneHelper = new DaemonControlPlaneHelper({
|
|
261
|
-
authToken: options.authToken,
|
|
262
|
-
userAuth: runtime.userAuth,
|
|
263
|
-
agentManager: runtime.agentManager,
|
|
264
|
-
controlPlaneGateway: runtime.controlPlaneGateway,
|
|
265
|
-
gatewayMethods: runtime.gatewayMethods,
|
|
266
|
-
host: runtime.host,
|
|
267
|
-
port: runtime.port,
|
|
268
|
-
distributedRuntime: runtime.distributedRuntime,
|
|
269
|
-
trustProxyEnabled: options.trustProxyEnabled,
|
|
270
|
-
dispatchApiRoutes: options.dispatchApiRoutes,
|
|
271
|
-
parseJsonBody: options.parseJsonBody,
|
|
272
|
-
requireAuthenticatedSession: options.requireAuthenticatedSession,
|
|
273
|
-
});
|
|
274
|
-
const transportEventsHelper = new DaemonTransportEventsHelper({
|
|
275
|
-
runtimeBus: runtime.runtimeBus,
|
|
276
|
-
hookDispatcher: runtime.runtimeServices.hookDispatcher,
|
|
277
|
-
host: runtime.host,
|
|
278
|
-
port: runtime.port,
|
|
279
|
-
tlsState: options.tlsState,
|
|
280
|
-
});
|
|
281
|
-
const httpRouter = new DaemonHttpRouter({
|
|
282
|
-
configManager: runtime.configManager,
|
|
283
|
-
serviceRegistry: runtime.serviceRegistry,
|
|
284
|
-
userAuth: runtime.userAuth,
|
|
285
|
-
agentManager: runtime.agentManager,
|
|
286
|
-
automationManager: runtime.automationManager,
|
|
287
|
-
approvalBroker: runtime.approvalBroker,
|
|
288
|
-
controlPlaneGateway: runtime.controlPlaneGateway,
|
|
289
|
-
gatewayMethods: runtime.gatewayMethods,
|
|
290
|
-
providerRegistry: runtime.runtimeServices.providerRegistry,
|
|
291
|
-
sessionBroker: runtime.sessionBroker,
|
|
292
|
-
routeBindings: runtime.routeBindings,
|
|
293
|
-
channelPolicy: runtime.channelPolicy,
|
|
294
|
-
channelPlugins: runtime.channelPlugins,
|
|
295
|
-
surfaceRegistry: runtime.surfaceRegistry,
|
|
296
|
-
distributedRuntime: runtime.distributedRuntime,
|
|
297
|
-
watcherRegistry: runtime.watcherRegistry,
|
|
298
|
-
voiceService: runtime.voiceService,
|
|
299
|
-
webSearchService: runtime.webSearchService,
|
|
300
|
-
knowledgeService: runtime.knowledgeService,
|
|
301
|
-
knowledgeGraphqlService: runtime.knowledgeGraphqlService,
|
|
302
|
-
mediaProviders: runtime.mediaProviders,
|
|
303
|
-
multimodalService: runtime.multimodalService,
|
|
304
|
-
artifactStore: runtime.artifactStore,
|
|
305
|
-
memoryRegistry: runtime.runtimeServices.memoryRegistry,
|
|
306
|
-
memoryEmbeddingRegistry: runtime.runtimeServices.memoryEmbeddingRegistry,
|
|
307
|
-
platformServiceManager: runtime.platformServiceManager,
|
|
308
|
-
integrationHelpers: runtime.integrationHelpers,
|
|
309
|
-
runtimeBus: runtime.runtimeBus,
|
|
310
|
-
runtimeStore: runtime.runtimeStore,
|
|
311
|
-
runtimeDispatch: runtime.runtimeDispatch,
|
|
312
|
-
githubWebhookSecret: runtime.githubWebhookSecret,
|
|
313
|
-
authToken: options.authToken,
|
|
314
|
-
buildSurfaceAdapterContext: () => surfaceActionHelper.buildSurfaceAdapterContext(),
|
|
315
|
-
buildGenericWebhookAdapterContext: () => surfaceActionHelper.buildGenericWebhookAdapterContext(),
|
|
316
|
-
checkAuth: options.checkAuth,
|
|
317
|
-
extractAuthToken: options.extractAuthToken,
|
|
318
|
-
requireAuthenticatedSession: options.requireAuthenticatedSession,
|
|
319
|
-
requireAdmin: options.requireAdmin,
|
|
320
|
-
requireRemotePeer: options.requireRemotePeer,
|
|
321
|
-
describeAuthenticatedPrincipal: options.describeAuthenticatedPrincipal,
|
|
322
|
-
invokeGatewayMethodCall: options.invokeGatewayMethodCall,
|
|
323
|
-
queueSurfaceReplyFromBinding: (binding, input) => surfaceDeliveryHelper.queueSurfaceReplyFromBinding(binding, input),
|
|
324
|
-
surfaceDeliveryEnabled: options.surfaceDeliveryEnabled,
|
|
325
|
-
syncSpawnedAgentTask: options.syncSpawnedAgentTask,
|
|
326
|
-
syncFinishedAgentTask: options.syncFinishedAgentTask,
|
|
327
|
-
trySpawnAgent: options.trySpawnAgent,
|
|
328
|
-
});
|
|
329
|
-
const providerRuntime = new ChannelProviderRuntimeManager({
|
|
330
|
-
configManager: runtime.configManager,
|
|
331
|
-
serviceRegistry: runtime.serviceRegistry,
|
|
332
|
-
buildSurfaceAdapterContext: () => surfaceActionHelper.buildSurfaceAdapterContext(),
|
|
333
|
-
});
|
|
334
|
-
const builtinChannels = new BuiltinChannelRuntime({
|
|
335
|
-
configManager: runtime.configManager,
|
|
336
|
-
secretsManager: runtime.runtimeServices.secretsManager,
|
|
337
|
-
serviceRegistry: runtime.serviceRegistry,
|
|
338
|
-
routeBindings: runtime.routeBindings,
|
|
339
|
-
channelPolicy: runtime.channelPolicy,
|
|
340
|
-
channelPlugins: runtime.channelPlugins,
|
|
341
|
-
providerRuntime,
|
|
342
|
-
deliveryRouter: runtime.deliveryManager.getDeliveryRouter(),
|
|
343
|
-
surfaceDeliveryEnabled: options.surfaceDeliveryEnabled,
|
|
344
|
-
buildSurfaceAdapterContext: () => surfaceActionHelper.buildSurfaceAdapterContext(),
|
|
345
|
-
buildGenericWebhookAdapterContext: () => surfaceActionHelper.buildGenericWebhookAdapterContext(),
|
|
346
|
-
deliverSurfaceProgress: (pending, progress) => surfaceDeliveryHelper.deliverSurfaceProgress(pending as PendingSurfaceReply, progress),
|
|
347
|
-
deliverSlackAgentReply: (pending, message) => surfaceDeliveryHelper.deliverSlackAgentReply(pending as PendingSurfaceReply, message),
|
|
348
|
-
deliverDiscordAgentReply: (pending, message) => surfaceDeliveryHelper.deliverDiscordAgentReply(pending as PendingSurfaceReply, message),
|
|
349
|
-
deliverNtfyAgentReply: (pending, message) => surfaceDeliveryHelper.deliverNtfyAgentReply(pending as PendingSurfaceReply, message),
|
|
350
|
-
deliverWebhookAgentReply: (pending, message) => surfaceDeliveryHelper.deliverWebhookAgentReply(pending as PendingSurfaceReply, message),
|
|
351
|
-
deliverSlackApprovalUpdate: (approval, binding) => surfaceDeliveryHelper.deliverSlackApprovalUpdate(approval, binding),
|
|
352
|
-
deliverDiscordApprovalUpdate: (approval, binding) => surfaceDeliveryHelper.deliverDiscordApprovalUpdate(approval, binding),
|
|
353
|
-
deliverNtfyApprovalUpdate: (approval, binding) => surfaceDeliveryHelper.deliverNtfyApprovalUpdate(approval, binding),
|
|
354
|
-
deliverWebhookApprovalUpdate: (approval, binding) => surfaceDeliveryHelper.deliverWebhookApprovalUpdate(approval, binding),
|
|
355
|
-
});
|
|
356
|
-
builtinChannels.registerPlugins();
|
|
357
|
-
|
|
358
|
-
return {
|
|
359
|
-
channelReplyPipeline,
|
|
360
|
-
controlPlaneHelper,
|
|
361
|
-
surfaceDeliveryHelper,
|
|
362
|
-
surfaceActionHelper,
|
|
363
|
-
transportEventsHelper,
|
|
364
|
-
httpRouter,
|
|
365
|
-
providerRuntime,
|
|
366
|
-
builtinChannels,
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
export function configureDaemonSessionContinuation(options: {
|
|
371
|
-
readonly sessionBroker: SharedSessionBroker;
|
|
372
|
-
readonly trySpawnAgent: (input: Parameters<AgentManager['spawn']>[0], logLabel?: string, sessionId?: string) => import('@pellux/goodvibes-sdk/platform/tools/agent/index').AgentRecord | Response;
|
|
373
|
-
readonly queueSurfaceReplyFromBinding: (binding: import('@pellux/goodvibes-sdk/platform/automation/routes').AutomationRouteBinding | undefined, input: {
|
|
374
|
-
readonly agentId: string;
|
|
375
|
-
readonly task: string;
|
|
376
|
-
readonly sessionId?: string;
|
|
377
|
-
}) => void;
|
|
378
|
-
}): void {
|
|
379
|
-
options.sessionBroker.setContinuationRunner(async ({ sessionId, input, task, routeBinding }) => {
|
|
380
|
-
const spawned = options.trySpawnAgent({
|
|
381
|
-
mode: 'spawn',
|
|
382
|
-
task,
|
|
383
|
-
...(input.routing?.modelId ? { model: input.routing.modelId } : {}),
|
|
384
|
-
...(input.routing?.providerId ? { provider: input.routing.providerId } : {}),
|
|
385
|
-
...(input.routing?.tools?.length ? { tools: [...input.routing.tools] } : {}),
|
|
386
|
-
context: `shared-session:${sessionId}`,
|
|
387
|
-
}, 'DaemonServer.sharedSessionFollowUp', sessionId);
|
|
388
|
-
if (spawned instanceof Response) {
|
|
389
|
-
return null;
|
|
390
|
-
}
|
|
391
|
-
options.queueSurfaceReplyFromBinding(routeBinding, {
|
|
392
|
-
agentId: spawned.id,
|
|
393
|
-
task: input.body,
|
|
394
|
-
sessionId,
|
|
395
|
-
});
|
|
396
|
-
return { agentId: spawned.id };
|
|
397
|
-
});
|
|
398
|
-
}
|