export declare const MANIFEST_FILENAME = ".mimi-seed.json"; export declare const SOCIAL_PROFILE_ID_PATTERN: RegExp; export type SocialPlatform = 'instagram' | 'threads' | 'facebook'; /** 매니페스트가 인지하는 서비스 id. status 매칭 로직이 이 키를 기준으로 동작한다. */ export type ManifestServiceId = 'oauth' | 'bigquery' | 'playstore' | 'appstore' | 'jenkins'; export interface ManifestService { /** 이 프로젝트에서 필수인지. false(선택)면 미설정이어도 ❌ 대신 정보 표기. */ required?: boolean; /** 사람이 읽을 한 줄 설명. status 출력에 그대로 표시. */ note?: string; projectId?: string; dataset?: string; packageName?: string; keyId?: string; issuerId?: string; url?: string; /** 이 서비스가 워크스페이스 공유 시크릿(provider)으로도 제공되는 경우 그 provider id. */ workspaceProvider?: string; } export interface ProjectManifest { project?: string; displayName?: string; description?: string; services?: Partial>; /** 플랫폼별로 ~/.mimi-seed/social-profiles/.json 을 선택한다. */ socialProfiles?: Partial>; } export interface LoadedManifest { manifest: ProjectManifest; /** 실제로 읽은 파일 절대 경로. */ filePath: string; } /** * startDir 에서 위로 올라가며 첫 번째 `.mimi-seed.json` 을 찾는다. * MCP stdio 서버의 cwd 는 보통 프로젝트 루트지만, 하위 폴더에서 실행돼도 잡히게 상향 탐색한다. * maxDepth 로 홈 디렉터리 밖까지 무한 상승하는 것을 방지. */ export declare function findProjectManifest(startDir?: string, maxDepth?: number): LoadedManifest | null; /** 매니페스트 services 를 [id, service] 배열로. 없으면 빈 배열. */ export declare function manifestServiceEntries(m: ProjectManifest): Array<[ManifestServiceId, ManifestService]>; /** 파일명으로 안전하게 사용할 수 있는 공개 프로필 id인지 확인한다. */ export declare function isValidSocialProfileId(value: string): boolean; /** 매니페스트에 지정된 플랫폼 프로필. 잘못된 값은 조용히 무시하지 않고 오류로 막는다. */ export declare function manifestSocialProfile(m: ProjectManifest, platform: SocialPlatform): string | null;