/** * Idea Builder * Creates and manages idea/brainstorming YAML files in the .novel/ideas directory. */ import type { IdeaEntry } from '../types/novel.js'; /** Filter options for listing ideas */ export interface IdeaFilter { tag?: string; status?: 'active' | 'used' | 'discarded'; } /** * Manages idea YAML files under `/.novel/ideas/`. * The sync layer is responsible for pushing ideas to the database. */ export declare class IdeaBuilder { private ideasDir; constructor(projectPath: string); /** * Derive a filesystem-safe slug key from content text, appending a * base-36 timestamp to guarantee uniqueness. */ private ideaKey; /** * Quickly capture a new idea with optional tags. * Writes a YAML file and returns the in-memory `IdeaEntry`. * * @param content - The idea text * @param tags - Optional tag strings * @returns The created `IdeaEntry` (projectId = 0 until synced) */ quickAdd(content: string, tags?: string[]): Promise; /** * List all ideas, optionally filtered by tag and/or status. * Results are sorted newest-first by `createdAt`. * * @param filter - Optional `IdeaFilter` * @returns Array of matching `IdeaEntry` objects */ list(filter?: IdeaFilter): Promise; /** * Retrieve a single idea by its key. * * @param key - The idea key (filename without `.yml`) * @returns The `IdeaEntry` or `null` if not found */ get(key: string): Promise; /** * Change the status of an existing idea. * * @param key - Idea key * @param status - New status value */ updateStatus(key: string, status: 'active' | 'used' | 'discarded'): Promise; /** * Link an idea to a named story entity. * * @param key - Idea key * @param type - Entity type * @param name - Entity name */ link(key: string, type: 'character' | 'plot' | 'location' | 'scene' | 'world-rule', name: string): Promise; /** * Append a note to an existing idea (newline-separated). * * @param key - Idea key * @param note - Note text to append */ addNote(key: string, note: string): Promise; } //# sourceMappingURL=idea-builder.d.ts.map