merge: integrate remote main
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
2026-09-07 13:43:27 +08:00
124 changed files with 4233 additions and 6599 deletions

View File

@@ -56,22 +56,3 @@ export interface CodingProjectConfigSnapshot {
config: CodingProjectConfig;
knowledgeFiles: string[];
}
export function isCodingProjectAgentReady(agent: CodingProjectAgent): boolean {
return agent.enabled
&& agent.archivedAt === null
&& agent.name.trim().length > 0
&& agent.avatarId.trim().length > 0
&& agent.roleName.trim().length > 0
&& agent.responsibility.mission.trim().length > 0
&& agent.modelResolution === 'resolved'
&& agent.model !== null;
}
export function hasReadyCodingProjectAgent(config: CodingProjectConfig): boolean {
return config.agents.some(isCodingProjectAgentReady);
}
export function isCodingProjectConversationReady(config: CodingProjectConfig): boolean {
return config.initialized && hasReadyCodingProjectAgent(config);
}

View File

@@ -1,45 +0,0 @@
/** Stable project-catalog boundary between Makelore and Works Square. */
export const LEARNING_API_PATH = '/api/works/learning';
export const LEARNING_MEDIA_MAX_BYTES = 10 * 1024 * 1024;
export type LearningProjectImage = {
url: string;
alt: string;
width?: number;
height?: number;
};
export type LearningProjectSummary = {
id: string;
name: string;
summary: string;
cover: LearningProjectImage;
tags: string[];
version: string | null;
archiveBytes: number;
publishedAt: string;
updatedAt: string;
};
export type LearningProjectDetail = LearningProjectSummary & {
readmeMarkdown: string;
archiveFileName: string;
archiveSha256: string;
};
export type LearningProjectPage = {
items: LearningProjectSummary[];
nextCursor: string | null;
total?: number;
};
export type LearningProjectListQuery = {
cursor?: string;
limit?: number;
};
export type LearningProjectDownloadResult = {
status: 'saved' | 'cancelled';
};

View File

@@ -1,7 +1,6 @@
export const MODULE_ACCESS_KEYS = [
'programming',
'design',
'learning',
'robot',
] as const;
@@ -12,7 +11,6 @@ export type ModuleAccess = Record<ModuleAccessKey, boolean>;
export const DEFAULT_MODULE_ACCESS: ModuleAccess = {
programming: true,
design: true,
learning: true,
robot: true,
};
@@ -24,7 +22,6 @@ export function normalizeModuleAccess(value: unknown): ModuleAccess {
return {
programming: typeof record.programming === 'boolean' ? record.programming : true,
design: typeof record.design === 'boolean' ? record.design : true,
learning: typeof record.learning === 'boolean' ? record.learning : true,
robot: typeof record.robot === 'boolean' ? record.robot : true,
};
}