Class: RailsAiBridge::Serializers::Providers::WindsurfSerializer

Inherits:
BaseProviderSerializer show all
Defined in:
lib/rails_ai_bridge/serializers/providers/windsurf_serializer.rb

Overview

Generates .windsurfrules within Windsurf's hard 6,000 character limit. Always produces compact output regardless of +context_mode+.

Constant Summary collapse

MAX_CHARS =

Maximum body length before truncation (buffer under Windsurf's 6K cap).

5_800

Constants inherited from BaseProviderSerializer

BaseProviderSerializer::MAX_CONFIG_FILES, BaseProviderSerializer::MAX_KEY_MODELS, BaseProviderSerializer::MAX_PATTERNS

Instance Attribute Summary

Attributes inherited from BaseProviderSerializer

#config, #context

Instance Method Summary collapse

Methods inherited from BaseProviderSerializer

#render_architecture, #render_commands, #render_compact, #render_footer, #render_header, #render_key_config_files, #render_key_considerations, #render_key_models, #render_notable_gems, #render_stack_overview

Constructor Details

#initialize(context, config: RailsAiBridge.configuration) ⇒ WindsurfSerializer

Returns a new instance of WindsurfSerializer.

Parameters:



14
15
16
# File 'lib/rails_ai_bridge/serializers/providers/windsurf_serializer.rb', line 14

def initialize(context, config: RailsAiBridge.configuration)
  super
end

Instance Method Details

#callString

Returns Windsurf rules file body, capped at +MAX_CHARS+ when over the limit.

Returns:

  • (String)

    Windsurf rules file body, capped at +MAX_CHARS+ when over the limit.



19
20
21
22
23
24
25
26
27
# File 'lib/rails_ai_bridge/serializers/providers/windsurf_serializer.rb', line 19

def call
  content = render
  # HARD enforce character limit — Windsurf silently truncates
  if content.length > MAX_CHARS
    content = content[0...MAX_CHARS]
    content += "\n\n# Use MCP tools for full details."
  end
  content
end