Class: Diogenes::Targets::Gemini

Inherits:
Base
  • Object
show all
Defined in:
lib/diogenes/targets/gemini.rb,
sig/generated/diogenes/targets/gemini.rbs

Constant Summary collapse

OUTPUT_PATH =

: String

Returns:

  • (String)
".gemini/instructions.md"

Instance Method Summary collapse

Methods inherited from Base

#generated_banner, #initialize, #skill_file_content, #write, #write_skill_files

Constructor Details

This class inherits a constructor from Diogenes::Targets::Base

Instance Method Details

#build(sources:) ⇒ Array[String]

: (sources: untyped) -> Array

Parameters:

  • sources: (Object)

Returns:

  • (Array[String])


10
11
12
13
# File 'lib/diogenes/targets/gemini.rb', line 10

def build(sources:)
  skill_files = write_skill_files(sources.skills, skills_dir: ".agents/skills")
  [write(OUTPUT_PATH, render(sources))] + skill_files
end

#headerString

: () -> String

Returns:

  • (String)


26
27
28
29
30
31
32
# File 'lib/diogenes/targets/gemini.rb', line 26

def header
  <<~HEADER.strip
    # Agent Instructions

    > #{generated_banner("gemini")}
  HEADER
end

#render(sources) ⇒ String

: (untyped) -> String

Parameters:

  • (Object)

Returns:

  • (String)


18
19
20
21
22
23
# File 'lib/diogenes/targets/gemini.rb', line 18

def render(sources)
  parts = [header]
  parts << rules_section(sources.rules) unless sources.rules.empty?
  parts << skills_section(sources.skills) unless sources.skills.empty?
  parts.join("\n\n")
end

#rules_section(rules) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


35
36
37
38
39
40
41
42
43
44
# File 'lib/diogenes/targets/gemini.rb', line 35

def rules_section(rules)
  lines = ["## Rules", ""]
  rules.each do |rule|
    lines << "### #{rule.name}"
    lines << ""
    lines << rule.content
    lines << ""
  end
  lines.join("\n").strip
end

#skills_section(skills) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


47
48
49
50
51
52
53
# File 'lib/diogenes/targets/gemini.rb', line 47

def skills_section(skills)
  lines = ["## Skills", ""]
  skills.each do |skill|
    lines << "- **#{skill.command}**: #{skill.description}"
  end
  lines.join("\n").strip
end