init claude-code
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Settings Sync Types
|
||||
*
|
||||
* Zod schemas and types for the user settings sync API.
|
||||
* Based on the backend API contract from anthropic/anthropic#218817.
|
||||
*/
|
||||
|
||||
import { z } from 'zod/v4'
|
||||
import { lazySchema } from '../../utils/lazySchema.js'
|
||||
|
||||
/**
|
||||
* Content portion of user sync data - flat key-value storage.
|
||||
* Keys are opaque strings (typically file paths).
|
||||
* Values are UTF-8 string content (JSON, Markdown, etc).
|
||||
*/
|
||||
export const UserSyncContentSchema = lazySchema(() =>
|
||||
z.object({
|
||||
entries: z.record(z.string(), z.string()),
|
||||
}),
|
||||
)
|
||||
|
||||
/**
|
||||
* Full response from GET /api/claude_code/user_settings
|
||||
*/
|
||||
export const UserSyncDataSchema = lazySchema(() =>
|
||||
z.object({
|
||||
userId: z.string(),
|
||||
version: z.number(),
|
||||
lastModified: z.string(), // ISO 8601 timestamp
|
||||
checksum: z.string(), // MD5 hash
|
||||
content: UserSyncContentSchema(),
|
||||
}),
|
||||
)
|
||||
|
||||
export type UserSyncData = z.infer<ReturnType<typeof UserSyncDataSchema>>
|
||||
|
||||
/**
|
||||
* Result from fetching user settings
|
||||
*/
|
||||
export type SettingsSyncFetchResult = {
|
||||
success: boolean
|
||||
data?: UserSyncData
|
||||
isEmpty?: boolean // true if 404 (no data exists)
|
||||
error?: string
|
||||
skipRetry?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
* Result from uploading user settings
|
||||
*/
|
||||
export type SettingsSyncUploadResult = {
|
||||
success: boolean
|
||||
checksum?: string
|
||||
lastModified?: string
|
||||
error?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Keys used for sync entries
|
||||
*/
|
||||
export const SYNC_KEYS = {
|
||||
USER_SETTINGS: '~/.claude/settings.json',
|
||||
USER_MEMORY: '~/.claude/CLAUDE.md',
|
||||
projectSettings: (projectId: string) =>
|
||||
`projects/${projectId}/.claude/settings.local.json`,
|
||||
projectMemory: (projectId: string) => `projects/${projectId}/CLAUDE.local.md`,
|
||||
} as const
|
||||
Reference in New Issue
Block a user