Wire provider streaming request lifecycle

This commit is contained in:
ZacharyZhang-NY committed 2026-05-23 20:20:14 -04:00
1 parent 6805d8a624
commit 08364c2571
18 files changed
+863 -164

No files matched your search

+8
View File
@@ -173,6 +173,14 @@ export interface CreateProviderResponseInput {
executionMode?: ProviderExecutionMode;
}
export type StreamProviderResponseInput = CreateProviderResponseInput;
export interface CancelProviderResponseInput {
orgId: string;
requestId: string;
providerResponseId?: string;
}
export interface ImportSkillDirectoryInput {
orgId: string;
directoryPath: string;
+8 -3
View File
@@ -4,6 +4,7 @@ import type {
BindSkillInput,
BootstrapOnboardingInput,
BootstrapOnboardingSummary,
CancelProviderResponseInput,
CreateAgentInput,
CreateApprovalInput,
CreateAuditReplayInput,
@@ -43,14 +44,16 @@ import type {
SetRollbackSnapshotActiveInput,
SetRetentionFreezeStateInput,
SetScheduledPostStateInput,
StreamProviderResponseInput,
SyncEmployeeIdentityInput,
UpdateProviderPolicyInput,
UpdateTaskStatusInput,
} from "./commands";
import type { ProviderStreamRendererEvent } from "./provider-request-domain";
export interface RendererEvent {
type: "snapshot-changed";
}
export type RendererEvent =
| { type: "snapshot-changed" }
| { type: "provider-response-stream"; event: ProviderStreamRendererEvent };
export interface DesktopApi {
loadSnapshot(): Promise<DesktopResult<AppSnapshot>>;
@@ -75,6 +78,8 @@ export interface DesktopApi {
updateProviderPolicy(input: UpdateProviderPolicyInput): Promise<DesktopResult<AppSnapshot>>;
openExternalUrl(url: string): Promise<DesktopResult<null>>;
createProviderResponse(input: CreateProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
streamProviderResponse(input: StreamProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
cancelProviderResponse(input: CancelProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
importSkillDirectory(input: ImportSkillDirectoryInput): Promise<DesktopResult<AppSnapshot>>;
bindSkill(input: BindSkillInput): Promise<DesktopResult<AppSnapshot>>;
resolveAgentSkills(input: ResolveAgentSkillsInput): Promise<DesktopResult<AppSnapshot>>;
+3 -22
View File
@@ -5,7 +5,8 @@ import type { AccessDecisionRecord, EmployeeIdentityRecord, RoleGrantRecord, Ser
import type { ApprovalAssignmentRecord, ApprovalRoutingRuleRecord, HiringPolicyRecord, OrgDepartmentRecord } from "./org-governance-domain";
import type { ChaosDrillRecord, ChaosDrillRunRecord, FeatureFlagRecord, OperationalEventRecord, SloTargetRecord } from "./operations-domain";
import type { ProviderAuthProfileRecord } from "./provider-auth-domain";
import type { ProviderDataPolicy, ProviderExecutionMode } from "./provider-policy-domain";
import type { ProviderDataPolicy } from "./provider-policy-domain";
import type { ProviderRequestRecord } from "./provider-request-domain";
import type { ProviderRateLimitObservationRecord, ProviderRateLimitStateRecord } from "./provider-runtime-domain";
import type { RollbackSnapshotRecord } from "./rollback-domain";
import type { EvalCaseRecord, EvalRunRecord, EvalSuiteRecord, PrBotGateRecord, SdlcReviewAgentRecord, SdlcReviewRunRecord } from "./sdlc-domain";
@@ -17,6 +18,7 @@ export { ROUTE_TO_TYPE, type ApprovalAssignmentRecord, type ApprovalRoutingRuleR
export { CHAOS_DRILL_SCENARIO, CHAOS_DRILL_STATE, FEATURE_FLAG_KEY, SLO_SIGNAL_KEY, type ChaosDrillRecord, type ChaosDrillRunRecord, type ChaosDrillScenario, type ChaosDrillState, type FeatureFlagKey, type FeatureFlagRecord, type OperationalEventRecord, type SloSignalKey, type SloTargetRecord } from "./operations-domain";
export type { ProviderAuthProfileRecord } from "./provider-auth-domain";
export { PROVIDER_DATA_POLICY, PROVIDER_EXECUTION_MODE, type ProviderDataPolicy, type ProviderExecutionMode } from "./provider-policy-domain";
export { PROVIDER_REQUEST_STATE, type ProviderRequestRecord, type ProviderRequestState, type ProviderStreamRendererEvent } from "./provider-request-domain";
export type { ProviderRateLimitObservationRecord, ProviderRateLimitStateRecord } from "./provider-runtime-domain";
export type { RollbackSnapshotRecord } from "./rollback-domain";
export { EVAL_SUITE_KEY, PR_BOT_GATE_KEY, SDLC_REVIEW_AGENT_KEY, SDLC_REVIEW_TARGET_TYPE, SDLC_RUN_STATE, type EvalCaseRecord, type EvalRunRecord, type EvalSuiteKey, type EvalSuiteRecord, type PrBotGateKey, type PrBotGateRecord, type SdlcReviewAgentKey, type SdlcReviewAgentRecord, type SdlcReviewRunRecord, type SdlcReviewTargetType, type SdlcRunState } from "./sdlc-domain";
@@ -27,7 +29,6 @@ export const RISK_LEVEL = { LOW: "low", MEDIUM: "medium", HIGH: "high" } as cons
export const TASK_PRIORITY = { LOW: "low", NORMAL: "normal", HIGH: "high" } as const;
export const PROVIDER_AUTH_TYPE = { API_KEY: "api_key", OAUTH_PKCE: "oauth_pkce", ACCOUNT_SUBSCRIPTION: "account_subscription", CLOUD: "cloud" } as const;
export const SOCIAL_PLATFORM = { X: "x", LINKEDIN: "linkedin", YOUTUBE: "youtube", INSTAGRAM: "instagram" } as const;
export const PROVIDER_REQUEST_STATE = { PENDING: "pending", SUCCEEDED: "succeeded", FAILED: "failed" } as const;
export const FILE_SCAN_STATE = { APPROVED: "approved", BLOCKED: "blocked" } as const;
export type ValueOf<T> = T[keyof T];
@@ -37,7 +38,6 @@ export type RiskLevel = ValueOf<typeof RISK_LEVEL>;
export type TaskPriority = ValueOf<typeof TASK_PRIORITY>;
export type ProviderAuthType = ValueOf<typeof PROVIDER_AUTH_TYPE>;
export type SocialPlatform = ValueOf<typeof SOCIAL_PLATFORM>;
export type ProviderRequestState = ValueOf<typeof PROVIDER_REQUEST_STATE>;
export type FileScanState = ValueOf<typeof FILE_SCAN_STATE>;
export interface OrganizationRecord {
@@ -323,25 +323,6 @@ export interface ProviderCatalogEntry {
models: ProviderCatalogModel[];
}
export interface ProviderRequestRecord {
id: string;
orgId: string;
providerId: string;
providerKey: string;
model: string;
promptSha256: string;
responseText: string | null;
rawResponseJson: string | null;
state: ProviderRequestState;
errorMessage: string | null;
inputCharCount: number;
outputCharCount: number;
executionMode: ProviderExecutionMode;
policyDecision: string;
createdAt: string;
completedAt: string | null;
}
export interface SkillDefinitionRecord {
id: string;
orgId: string;
+2
View File
@@ -21,6 +21,8 @@ export const IPC_CHANNELS = {
updateProviderPolicy: "agentcompany:update-provider-policy",
openExternalUrl: "agentcompany:open-external-url",
createProviderResponse: "agentcompany:create-provider-response",
streamProviderResponse: "agentcompany:stream-provider-response",
cancelProviderResponse: "agentcompany:cancel-provider-response",
importSkillDirectory: "agentcompany:import-skill-directory",
bindSkill: "agentcompany:bind-skill",
resolveAgentSkills: "agentcompany:resolve-agent-skills",
@@ -0,0 +1,46 @@
import type { ProviderExecutionMode } from "./provider-policy-domain";
export const PROVIDER_REQUEST_STATE = {
PENDING: "pending",
STREAMING: "streaming",
SUCCEEDED: "succeeded",
FAILED: "failed",
CANCELLED: "cancelled",
} as const;
export type ProviderRequestState = typeof PROVIDER_REQUEST_STATE[keyof typeof PROVIDER_REQUEST_STATE];
export interface ProviderRequestRecord {
id: string;
orgId: string;
providerId: string;
providerKey: string;
model: string;
promptSha256: string;
responseText: string | null;
rawResponseJson: string | null;
state: ProviderRequestState;
errorMessage: string | null;
inputCharCount: number;
outputCharCount: number;
executionMode: ProviderExecutionMode;
policyDecision: string;
externalResponseId: string | null;
streamEventCount: number;
cancelledAt: string | null;
createdAt: string;
completedAt: string | null;
}
export interface ProviderStreamRendererEvent {
requestId: string;
providerId: string;
providerKey: string;
model: string;
streamEventType: "message_start" | "text_delta" | "message_stop" | "error";
textDelta: string | null;
responseText: string;
providerResponseId: string | null;
rawEventJson: string;
streamEventCount: number;
}