Class: Diogenes::Targets::Codex

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

Constant Summary collapse

OUTPUT_PATH =

: String

Returns:

"AGENTS.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:

Returns:



10
11
12
13
# File 'lib/diogenes/targets/codex.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:



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

def header
  <<~HEADER.strip
    # Agent Instructions

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

#render(sources) ⇒ String

: (untyped) -> String

Parameters:

Returns:



18
19
20
21
22
23
# File 'lib/diogenes/targets/codex.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:



35
36
37
38
39
40
41
42
43
44
# File 'lib/diogenes/targets/codex.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:



47
48
49
50
51
52
53
54
55
56
# File 'lib/diogenes/targets/codex.rb', line 47

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