Q176: onboarding progress survives a restart, and an unfinished setup reopens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-09 05:25:01 -04:00
1 parent 43dcb1e7d3
commit fd79f059ca
20 files changed
+341 -71

No files matched your search

+15
View File
@@ -15,6 +15,21 @@ export interface BootstrapOnboardingInput {
providerModel: string;
}
/** The unfinished wizard as saved between launches; it has no key field, so a key is never stored before launch. */
export interface OnboardingDraft {
step: "welcome" | "provider" | "company" | "mode" | "mission";
companyName: string;
companyDescription: string;
employeeName: string;
workspacePath: string;
executionMode: "ai_ceo" | "ai_cofounder";
providerKey: string;
providerBaseUrl: string;
providerModel: string;
goalTitle: string;
goalDescription: string;
}
export interface BootstrapOnboardingSummary {
orgId: string;
employeeId: string;
+3
View File
@@ -74,6 +74,7 @@ import type {
SaveProviderCredentialInput,
SetProviderModelInput,
ProviderEndpoint,
OnboardingDraft,
ProviderDisconnectImpact,
ConnectComposioToolkitInput,
ConnectComposioToolkitResult,
@@ -122,6 +123,8 @@ export interface DesktopApi {
loadSnapshot(): Promise<DesktopResult<AppSnapshot>>;
/** Restarts the app, which a display-language change needs; the user asks for it after seeing what it interrupts. */
relaunchApp(): Promise<DesktopResult<null>>;
saveOnboardingDraft(input: { draft: OnboardingDraft | null }): Promise<DesktopResult<null>>;
completeSetup(input: { orgId: string }): Promise<DesktopResult<AppSnapshot>>;
/** Every agent session running now, in every company: what a restart interrupts. */
runningSessionCount(): Promise<DesktopResult<number>>;
bootstrapOnboarding(input: BootstrapOnboardingInput): Promise<DesktopResult<BootstrapOnboardingSummary>>;
+2
View File
@@ -50,6 +50,8 @@ export interface OrganizationRecord {
auditModelId: string | null;
/** The language its agents work in unless a task sets its own. */
workLanguage: WorkLanguage;
/** When the steps after creation (connectors) were finished; null reopens the setup wizard. */
setupCompletedAt: string | null;
createdAt: string;
}
+2
View File
@@ -1,6 +1,8 @@
export const IPC_CHANNELS = {
loadSnapshot: "agentcompany:load-snapshot",
relaunchApp: "agentcompany:relaunch-app",
saveOnboardingDraft: "agentcompany:save-onboarding-draft",
completeSetup: "agentcompany:complete-setup",
runningSessionCount: "agentcompany:running-session-count",
bootstrapOnboarding: "agentcompany:bootstrap-onboarding",
setActiveOrganization: "agentcompany:set-active-organization",
+3
View File
@@ -1,3 +1,4 @@
import type { OnboardingDraft } from "./commands";
import type { UsageStatsRecord } from "./usage-stats";
import type { IntegrationKeyStatus } from "./commands/integration-keys";
import type { BoardInterventionRecord as BoardInterventionRecordModel } from "./board-domain";
@@ -70,6 +71,8 @@ export interface UiPreferences {
export interface AppSnapshot {
activeOrgId: string | null;
uiPreferences: UiPreferences;
/** The setup wizard left unfinished, resumed on the next launch. */
onboardingDraft: OnboardingDraft | null;
/** True while the operator has paused the autonomous run engine. */
autonomousPaused: boolean;
integrationKeys: IntegrationKeyStatus[];