Files
CLI-Anything/macrocli
haorui-harry 4cef98473b feat(macrocli): add interactive and Gemini-assisted macro parameterization
core/parameterize.py (new):
  - interactive_parameterize(): CLI prompt loop, validates snake_case names,
    skips on Enter, detects duplicate names
  - parameterize_yaml_file(): post-hoc parameterization of existing YAML files
  - gemini_suggest_parameters(): sends type_text values to Gemini with strict
    prompt, returns {step_index: param_name} suggestions
  - _valid_param_name(): enforces [a-z][a-z0-9_]* format

core/recorder.py:
  - to_yaml(parameters=None): accept pre-built parameters block
  - save(parameters=None): pass through to to_yaml
  - get_type_steps(): list (index, step) for all non-empty type_text steps
  - apply_parameterization(assignments): replace text values with ${param}
    in-place, auto-infer type (string/integer/float), return parameters block

macrocli_cli.py:
  - macro record --parameterize: interactive loop after recording
  - macro record --auto-parameterize [--api-key]: Gemini suggestions + confirm
  - macro parameterize <yaml_file>: post-hoc parameterization of any YAML
  - macro parameterize --auto [--api-key]: Gemini-assisted post-hoc
2026-04-21 16:50:10 +08:00
..