Skip to content

feat(target): add openfox target support - #3394

Open
JamesAdams (JamesDAdams) wants to merge 2 commits into
microsoft:mainfrom
JamesDAdams:feat/openfox-support
Open

JamesAdams (JamesDAdams) wants to merge 2 commits into
microsoft:mainfrom
JamesDAdams:feat/openfox-support

Conversation

@JamesDAdams

@JamesDAdams JamesAdams (JamesDAdams) commented Oct 26, 2026 •

Copy link
Copy Markdown

Description

Add native target support for OpenFox in APM (.openfox/agents/ and .openfox/skills/).

Summary of changes

  • Add openfox to target capabilities and catalog with compile_family="agents" and primitive_profile="openfox".
  • Support deploying agents to .openfox/agents/ and skills to .openfox/skills/.
  • Implement _write_openfox_agent in AgentIntegrator ensuring required id and mapping tools to allowedTools in frontmatter.
  • Support auto-detection of .openfox/ directory and explicit --target openfox.
  • Comprehensive test coverage across target catalog, detection, integration, and new dedicated test suite test_openfox_target.py.

Type of change

  • New feature

Testing

  • Tested locally
  • All existing tests pass
  • Added tests for new functionality

Spec conformance (OpenAPM v0.1)

  • N/A -- PR does not change OpenAPM-observable behaviour.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Deployment and bundle paths can bypass agent normalization, omit tool restrictions, or drop installed skills.

4 open issues
What changed in this PR

Adds OpenFox as a native APM target, extending target selection, detection, compilation routing, and agent/skill deployment.

Changes:

  • Registers project-scoped OpenFox support with .openfox/agents/ and .openfox/skills/.
  • Adds agent frontmatter normalization and OpenFox handling in bundle, policy, and deployment infrastructure.
  • Adds coverage for target registration, detection, scope, and integration.
File Description
tests/​unit/​integration/​test_targets.py Tests automatic and explicit OpenFox selection.
tests/​unit/​integration/​test_openfox_target.py Adds dedicated profile, detection, and deployment tests.
tests/​unit/​integration/​test_data_driven_dispatch.py Adds the OpenFox agent partition expectation.
tests/​unit/​integration/​test_agent_integrator.py Excludes OpenFox from verbatim-copy expectations.
tests/​unit/​core/​test_target_detection.py Tests OpenFox detection and compilation routing.
tests/​unit/​core/​test_target_catalog.py Adds catalog and native-profile expectations.
tests/​unit/​core/​test_target_catalog_owner_invariant.py Includes OpenFox in catalog invariants.
tests/​unit/​core/​test_scope.py Tests project-only scope support.
src/​apm_cli/​policy/​policy_checks.py Adds .openfox to policy scan paths.
src/​apm_cli/​models/​dependency/​host_virtual.py Recognizes the OpenFox virtual root.
src/​apm_cli/​integration/​targets.py Defines native agent and skill deployment paths.
src/​apm_cli/​integration/​agent_integrator.py Adds OpenFox metadata normalization and dispatch.
src/​apm_cli/​core/​target_detection.py Adds selection, detection, descriptions, and compilation routing.
src/​apm_cli/​core/​target_catalog.py Registers OpenFox capabilities.
src/​apm_cli/​core/​errors.py Includes OpenFox in detection guidance.
src/​apm_cli/​core/​deployment_ledger.py Recognizes the OpenFox deployment prefix.
src/​apm_cli/​compilation/​context_optimizer.py Treats .openfox as a hidden tool tree.
src/​apm_cli/​commands/​init.py Adds OpenFox to initialization target choices.
src/​apm_cli/​bundle/​lockfile_enrichment.py Adds cross-target bundle path mappings.

Review effort: Balanced

@JamesDAdams

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants