* feat(integrations): add YamlIntegration base class for YAML recipe agents
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* feat(integrations): add Goose integration subpackage with YAML recipe support
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* feat(integrations): register GooseIntegration in the integration registry
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* feat(agents): add YAML format support to CommandRegistrar for extension/preset commands
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* feat(scripts): add goose agent type to bash update-agent-context script
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* feat(scripts): add goose agent type to PowerShell update-agent-context script
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* docs(agents): add Goose to supported agents table and integration notes
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* docs(readme): add Goose to supported agents table
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* test(integrations): add YamlIntegrationTests base mixin for YAML agent testing
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* test(integrations): add Goose integration tests
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* test(consistency): add Goose consistency checks for config, registrar, and scripts
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* docs(agents): move Goose to YAML Format section in Command File Formats
Goose uses YAML recipes, not Markdown. Remove it from the Markdown Format
list and add a dedicated YAML Format subsection with a representative
recipe example showing prompt: | and {{args}} placeholders.
* refactor(agents): delegate render_yaml_command to YamlIntegration
Remove the duplicate header dict, yaml.safe_dump call, body indentation,
and _human_title logic from CommandRegistrar.render_yaml_command(). Delegate
to YamlIntegration._render_yaml() and _human_title() so YAML recipe output
stays consistent across the init-time generation and command-registration
code paths.
* fix(agents): guard alias output path against directory traversal
Validate that alias_file resolves within commands_dir before writing.
Uses the same resolve().relative_to() pattern already established in
extensions.py for ZIP path containment checks.
* docs(agents): add Goose to Multi-Agent Support comment list in update-agent-context.sh
* fix(agents): add goose to print_summary Usage line in bash context script
The print_summary() function listed all supported agents in its Usage
output but omitted goose, making it inconsistent with the header docs
and the error message in update_specific_agent().
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): add goose to Print-Summary Usage line in PowerShell context script
The Print-Summary function listed all supported agents in its Usage
output but omitted goose, making it inconsistent with the ValidateSet
and the header documentation.
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): normalize description and title types in YamlIntegration.setup()
YAML frontmatter can contain non-string types (null, list, int).
Add isinstance checks matching TomlIntegration._extract_description()
to ensure Goose recipes always receive valid string fields.
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): validate shared script exists before exec in Goose bash wrapper
Add Forge-style check that the shared update-agent-context.sh is
present and executable, producing a clear error instead of a cryptic
shell exec failure when the shared script is missing.
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): validate shared script exists before invoke in Goose PowerShell wrapper
Add Forge-style Test-Path check that the shared update-agent-context.ps1
exists, producing a clear error instead of a cryptic PowerShell failure
when the shared script is missing.
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): normalize title and description types in render_yaml_command()
Extension/preset frontmatter can contain non-string types. Add
isinstance checks matching the normalization in YamlIntegration.setup()
so both code paths produce valid Goose recipe fields.
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(agents): replace $ARGUMENTS with arg_placeholder in process_template()
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* test(agents): assert $ARGUMENTS absent from generated YAML recipes
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* test(agents): assert $ARGUMENTS absent from generated TOML commands
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
* fix(tests): rewrite docstring to avoid embedded triple-quote in TOML test
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>
---------
Signed-off-by: Furkan Köykıran <furkankoykiran@gmail.com>