Files
renamer/specs/008-ai-rename-prompt/data-model.md
Rogee 3867736858 feat: implement AI-assisted rename prompting feature
- Added data model for AI-assisted renaming including structures for prompts, responses, and policies.
- Created implementation plan detailing the integration of Google Genkit into the CLI for renaming tasks.
- Developed quickstart guide for setting up and using the new AI rename functionality.
- Documented research decisions regarding Genkit orchestration and prompt composition.
- Established tasks for phased implementation, including setup, foundational work, and user stories.
- Implemented contract tests to ensure AI rename policies and ledger metadata are correctly applied.
- Developed integration tests for validating AI rename flows, including preview, apply, and undo functionalities.
- Added tooling to pin Genkit dependency for consistent builds.
2025-11-03 18:08:14 +08:00

3.0 KiB

Data Model: AI-Assisted Rename Prompting

AiRenamePrompt

  • Fields
    • WorkingDir (string; absolute path)
    • SampleFiles ([]PromptSample)
    • TotalCount (int)
    • SequenceRule (SequenceRuleConfig)
    • NamingPolicies (NamingPolicyConfig)
    • BannedTerms ([]string)
    • Metadata (map[string]string; includes CLI version, timestamp)
  • Relationships: Built from traversal summary; sent to Genkit workflow.
  • Validations: Require ≥1 sample, forbid empty banned terms, limit payload to ≤2 MB serialized.

PromptSample

  • Fields
    • OriginalName (string)
    • SizeBytes (int64)
    • Extension (string)
    • PathDepth (int)

SequenceRuleConfig

  • Fields
    • Style (enum: prefix, suffix)
    • Width (int)
    • Start (int)
    • Separator (string)

NamingPolicyConfig

  • Fields
    • Prefix (string)
    • Casing (enum: kebab, snake, camel, pascal, title)
    • AllowSpaces (bool)
    • KeepOriginalOrder (bool)
    • ForbiddenTokens ([]string)

AiRenameResponse

  • Fields
    • Items ([]AiRenameItem)
    • Warnings ([]string)
    • PromptHash (string)
    • Model (string)
  • Relationships: Parsed from Genkit output; feeds validation pipeline.
  • Validations: Items length must equal scoped candidate count; Original names must match traversal list; Proposed must be unique.

AiRenameItem

  • Fields
    • Original (string; relative path)
    • Proposed (string; sanitized stem + extension)
    • Sequence (int)
    • Notes (string; optional reasoning)

AiRenamePlan

  • Fields
    • Candidates ([]PlanEntry)
    • Conflicts ([]PlanConflict)
    • Policies (NamingPolicyConfig)
    • SequenceAppliedWidth (int)
    • Warnings ([]string)
  • Relationships: Created post-validation for preview/apply; persisted to ledger metadata.
  • Validations: Enforce contiguous sequences, ensure sanitized stems non-empty, confirm banned tokens absent.

PlanEntry

  • Fields
    • OriginalPath (string)
    • ProposedPath (string)
    • Sequence (int)
    • Status (enum: pending, edited, skipped, unchanged)
    • SanitizedSegments ([]string)

PlanConflict

  • Fields
    • OriginalPath (string)
    • Issue (enum: duplicate, collision, policy_violation, missing_sequence)
    • Details (string)

AiRenameLedgerMetadata

  • Fields
    • PromptHash (string)
    • ResponseHash (string)
    • Model (string)
    • Policies (NamingPolicyConfig)
    • BatchSize (int)
    • AppliedAt (time.Time)
  • Relationships: Stored under Entry.Metadata["ai"] when applying rename batch; consumed by undo for auditing.

GenkitWorkflowConfig

  • Fields
    • Endpoint (string; local or remote URL)
    • Timeout (Duration)
    • RetryPolicy (RetryPolicy)
    • ApiKeyRef (string; environment variable name mapping to $HOME/.config/.renamer/{name} token file)

RetryPolicy

  • Fields
    • MaxAttempts (int)
    • BackoffInitial (Duration)
    • BackoffMultiplier (float64)
    • FallbackModel (string; optional)