Module: Ace::Assign

Defined in:
lib/ace/assign.rb,
lib/ace/assign/cli.rb,
lib/ace/assign/version.rb,
lib/ace/assign/models/step.rb,
lib/ace/assign/cli/commands/add.rb,
lib/ace/assign/atoms/step_sorter.rb,
lib/ace/assign/cli/commands/fail.rb,
lib/ace/assign/cli/commands/list.rb,
lib/ace/assign/cli/commands/step.rb,
lib/ace/assign/models/assignment.rb,
lib/ace/assign/cli/commands/start.rb,
lib/ace/assign/models/queue_state.rb,
lib/ace/assign/atoms/preset_loader.rb,
lib/ace/assign/cli/commands/create.rb,
lib/ace/assign/cli/commands/finish.rb,
lib/ace/assign/cli/commands/select.rb,
lib/ace/assign/cli/commands/status.rb,
lib/ace/assign/atoms/catalog_loader.rb,
lib/ace/assign/atoms/step_numbering.rb,
lib/ace/assign/atoms/tree_formatter.rb,
lib/ace/assign/atoms/preset_expander.rb,
lib/ace/assign/cli/commands/fork_run.rb,
lib/ace/assign/molecules/step_writer.rb,
lib/ace/assign/atoms/number_generator.rb,
lib/ace/assign/atoms/step_file_parser.rb,
lib/ace/assign/cli/commands/retry_cmd.rb,
lib/ace/assign/models/assignment_info.rb,
lib/ace/assign/atoms/composition_rules.rb,
lib/ace/assign/molecules/queue_scanner.rb,
lib/ace/assign/cli/commands/fork_session.rb,
lib/ace/assign/molecules/preset_inferrer.rb,
lib/ace/assign/molecules/step_renumberer.rb,
lib/ace/assign/atoms/preset_step_resolver.rb,
lib/ace/assign/molecules/tmux_fork_runner.rb,
lib/ace/assign/molecules/assignment_manager.rb,
lib/ace/assign/organisms/assignment_executor.rb,
lib/ace/assign/cli/commands/assignment_target.rb,
lib/ace/assign/atoms/assign_frontmatter_parser.rb,
lib/ace/assign/molecules/assignment_discoverer.rb,
lib/ace/assign/molecules/fork_session_launcher.rb,
lib/ace/assign/organisms/task_assignment_creator.rb,
lib/ace/assign/molecules/skill_assign_source_resolver.rb

Defined Under Namespace

Modules: AssignmentErrors, Atoms, CLI, Commands, ConfigErrors, Models, Molecules, Organisms, StepErrors Classes: Error

Constant Summary collapse

VERSION =
'0.53.4'

Class Method Summary collapse

Class Method Details

.cache_dirString

Default cache directory for assignments Returns an absolute path resolved from project root. Respects CACHE_BASE environment variable for sandboxed/isolated testing. Respects PROJECT_ROOT_PATH environment variable for sandboxed/isolated testing.

Returns:

  • (String)

    Cache directory path (absolute)



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/ace/assign.rb', line 104

def self.cache_dir
  # Allow explicit CACHE_BASE override for testing/sandboxing
  cache_base = ENV["CACHE_BASE"]
  if cache_base && !cache_base.empty?
    return File.expand_path(cache_base)
  end

  relative_path = config["cache_dir"] || ".ace-local/assign"

  # If already absolute, return as-is
  return relative_path if Pathname.new(relative_path).absolute?

  # Resolve relative to project root (respects PROJECT_ROOT_PATH)
  project_root = Ace::Support::Fs::Molecules::ProjectRootFinder.find_or_current
  File.join(project_root, relative_path)
end

.configObject

Configuration Follows ADR-022: Configuration Default and Override Pattern Uses Ace::Support::Config.create() for configuration cascade resolution



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/ace/assign.rb', line 74

def self.config
  @config ||= begin
    gem_root = Gem.loaded_specs["ace-assign"]&.gem_dir ||
      File.expand_path("../..", __dir__)

    resolver = Ace::Support::Config.create(
      config_dir: ".ace",
      defaults_dir: ".ace-defaults",
      gem_path: gem_root
    )

    # Resolve config for assign namespace
    config = resolver.resolve_namespace("assign")
    config.data
  rescue => e
    warn "ace-assign: Could not load config: #{e.class} - #{e.message}" if debug?
    load_gem_defaults_fallback
  end
end

.debug?Boolean

Check if debug mode is enabled

Returns:

  • (Boolean)

    True if debug mode is enabled



67
68
69
# File 'lib/ace/assign.rb', line 67

def self.debug?
  ENV["ACE_DEBUG"] == "1" || ENV["DEBUG"] == "1"
end

.load_gem_defaultsHash

Load gem defaults from .ace-defaults/assign/config.yml

Returns:

  • (Hash)

    Gem defaults hash



123
124
125
126
127
128
129
130
131
# File 'lib/ace/assign.rb', line 123

def self.load_gem_defaults
  gem_root = Gem.loaded_specs["ace-assign"]&.gem_dir ||
    File.expand_path("../..", __dir__)
  defaults_path = File.join(gem_root, ".ace-defaults", "assign", "config.yml")

  return {} unless File.exist?(defaults_path)

  YAML.safe_load_file(defaults_path, permitted_classes: [Date], aliases: true) || {}
end

.reset_config!Object

Reset config cache (useful for testing)



95
96
97
# File 'lib/ace/assign.rb', line 95

def self.reset_config!
  @config = nil
end