apm-cli 0.9.4__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {apm_cli-0.9.4/src/apm_cli.egg-info → apm_cli-0.10.0}/PKG-INFO +11 -1
- {apm_cli-0.9.4 → apm_cli-0.10.0}/README.md +9 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/pyproject.toml +2 -1
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/_helpers.py +12 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/config.py +99 -1
- apm_cli-0.10.0/src/apm_cli/commands/marketplace.py +2064 -0
- apm_cli-0.10.0/src/apm_cli/commands/marketplace_plugin.py +395 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/uninstall/engine.py +34 -2
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/config.py +63 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/experimental.py +15 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/target_detection.py +7 -1
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/context.py +5 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/integrate.py +74 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/targets.py +77 -5
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/services.py +83 -5
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/template.py +1 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/validation.py +69 -29
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/base_integrator.py +73 -2
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/cleanup.py +84 -7
- apm_cli-0.10.0/src/apm_cli/integration/copilot_cowork_paths.py +241 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/skill_integrator.py +81 -12
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/targets.py +147 -11
- apm_cli-0.10.0/src/apm_cli/marketplace/__init__.py +90 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/_git_utils.py +19 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/_io.py +30 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/builder.py +730 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/client.py +2 -1
- apm_cli-0.10.0/src/apm_cli/marketplace/errors.py +128 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/git_stderr.py +178 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/init_template.py +82 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/pr_integration.py +482 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/publisher.py +895 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/ref_resolver.py +332 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/semver.py +242 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/tag_pattern.py +103 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/version_pins.py +17 -1
- apm_cli-0.10.0/src/apm_cli/marketplace/yml_editor.py +268 -0
- apm_cli-0.10.0/src/apm_cli/marketplace/yml_schema.py +473 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0/src/apm_cli.egg-info}/PKG-INFO +11 -1
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli.egg-info/SOURCES.txt +14 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli.egg-info/requires.txt +1 -0
- apm_cli-0.9.4/src/apm_cli/commands/marketplace.py +0 -556
- apm_cli-0.9.4/src/apm_cli/marketplace/__init__.py +0 -28
- apm_cli-0.9.4/src/apm_cli/marketplace/errors.py +0 -44
- {apm_cli-0.9.4 → apm_cli-0.10.0}/AUTHORS +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/LICENSE +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/setup.cfg +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/base.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/codex.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/copilot.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/cursor.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/gemini.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/opencode.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/client/vscode.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/package_manager/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/package_manager/base.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/adapters/package_manager/default_manager.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/bundle/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/bundle/lockfile_enrichment.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/bundle/packer.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/bundle/plugin_exporter.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/bundle/unpacker.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/cli.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/_apm_yml_writer.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/audit.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/compile/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/compile/cli.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/compile/watcher.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/deps/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/deps/_utils.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/deps/cli.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/experimental.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/init.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/install.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/list_cmd.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/mcp.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/outdated.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/pack.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/policy.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/prune.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/run.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/runtime.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/uninstall/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/uninstall/cli.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/update.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/commands/view.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/agents_compiler.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/claude_formatter.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/constants.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/constitution.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/constitution_block.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/context_optimizer.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/distributed_compiler.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/gemini_formatter.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/injector.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/link_resolver.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/compilation/template_builder.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/constants.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/auth.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/azure_cli.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/command_logger.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/conflict_detector.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/docker_args.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/operations.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/safe_installer.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/scope.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/script_runner.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/core/token_manager.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/aggregator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/apm_resolver.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/artifactory_entry.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/collection_parser.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/dependency_graph.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/github_downloader.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/installed_package.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/lockfile.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/package_validator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/plugin_parser.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/registry_proxy.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/transport_selection.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/deps/verifier.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/drift.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/factory.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/errors.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/helpers/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/helpers/security_scan.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/insecure_policy.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/mcp_registry.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/mcp_warnings.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/cleanup.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/download.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/finalize.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/local_content.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/lockfile.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/policy_gate.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/policy_target_check.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/post_deps_local.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/phases/resolve.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/pipeline.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/presentation/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/presentation/dry_run.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/request.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/service.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/install/sources.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/agent_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/command_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/coverage.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/dispatch.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/hook_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/instruction_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/mcp_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/prompt_integrator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/skill_transformer.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/integration/utils.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/models.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/registry.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/resolver.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/shadow_detector.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/marketplace/validator.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/apm_package.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/dependency/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/dependency/mcp.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/dependency/reference.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/dependency/types.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/plugin.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/results.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/models/validation.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/output/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/output/formatters.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/output/models.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/output/script_formatters.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/ci_checks.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/discovery.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/inheritance.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/install_preflight.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/matcher.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/models.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/outcome_routing.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/parser.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/policy_checks.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/project_config.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/policy/schema.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/primitives/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/primitives/discovery.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/primitives/models.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/primitives/parser.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/registry/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/registry/client.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/registry/integration.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/registry/operations.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/base.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/codex_runtime.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/copilot_runtime.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/factory.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/llm_runtime.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/runtime/manager.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/security/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/security/audit_report.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/security/content_scanner.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/security/file_scanner.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/security/gate.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/update_policy.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/console.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/content_hash.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/diagnostics.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/exclude.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/file_ops.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/github_host.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/helpers.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/path_security.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/paths.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/subprocess_env.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/version_checker.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/utils/yaml_io.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/version.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/workflow/__init__.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/workflow/discovery.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/workflow/parser.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli/workflow/runner.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli.egg-info/dependency_links.txt +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli.egg-info/entry_points.txt +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/src/apm_cli.egg-info/top_level.txt +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_apm_package_models.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_apm_resolver.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_codex_docker_args_fix.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_codex_empty_string_and_defaults.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_collision_integration.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_console.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_distributed_compilation.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_empty_string_and_defaults.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_enhanced_discovery.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_github_downloader.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_github_downloader_token_precedence.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_lockfile.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_runnable_prompts.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_runtime_manager_token_precedence.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_token_manager.py +0 -0
- {apm_cli-0.9.4 → apm_cli-0.10.0}/tests/test_virtual_package_multi_install.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apm-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0
|
|
4
4
|
Summary: MCP configuration tool
|
|
5
5
|
Author-email: Daniel Meppiel <user@example.com>
|
|
6
6
|
License: MIT License
|
|
@@ -49,6 +49,7 @@ Requires-Dist: rich>=13.0.0
|
|
|
49
49
|
Requires-Dist: rich-click>=1.7.0
|
|
50
50
|
Requires-Dist: watchdog>=3.0.0
|
|
51
51
|
Requires-Dist: GitPython>=3.1.0
|
|
52
|
+
Requires-Dist: ruamel.yaml>=0.18.0
|
|
52
53
|
Provides-Extra: dev
|
|
53
54
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
54
55
|
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
@@ -106,6 +107,15 @@ git clone <org/repo> && cd <repo>
|
|
|
106
107
|
apm install # every agent is configured
|
|
107
108
|
```
|
|
108
109
|
|
|
110
|
+
**Coming from `npx skills add`?** Drop-in:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
apm install vercel-labs/agent-skills # whole bundle, like npx skills add
|
|
114
|
+
apm install vercel-labs/agent-skills --skill deploy-to-vercel # one skill, persisted to apm.yml
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Same install gesture. You also get a [manifest, lockfile, and reproducibility](https://microsoft.github.io/apm/reference/package-types/#skill-collection-skillsnameskillmd).
|
|
118
|
+
|
|
109
119
|
## The three promises
|
|
110
120
|
|
|
111
121
|
### 1. Portable by manifest
|
|
@@ -44,6 +44,15 @@ git clone <org/repo> && cd <repo>
|
|
|
44
44
|
apm install # every agent is configured
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
**Coming from `npx skills add`?** Drop-in:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
apm install vercel-labs/agent-skills # whole bundle, like npx skills add
|
|
51
|
+
apm install vercel-labs/agent-skills --skill deploy-to-vercel # one skill, persisted to apm.yml
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Same install gesture. You also get a [manifest, lockfile, and reproducibility](https://microsoft.github.io/apm/reference/package-types/#skill-collection-skillsnameskillmd).
|
|
55
|
+
|
|
47
56
|
## The three promises
|
|
48
57
|
|
|
49
58
|
### 1. Portable by manifest
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "apm-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.10.0"
|
|
8
8
|
description = "MCP configuration tool"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -35,6 +35,7 @@ dependencies = [
|
|
|
35
35
|
"rich-click>=1.7.0",
|
|
36
36
|
"watchdog>=3.0.0",
|
|
37
37
|
"GitPython>=3.1.0",
|
|
38
|
+
"ruamel.yaml>=0.18.0",
|
|
38
39
|
]
|
|
39
40
|
|
|
40
41
|
[project.optional-dependencies]
|
|
@@ -5,6 +5,7 @@ This module must NOT import from any command module.
|
|
|
5
5
|
|
|
6
6
|
import builtins
|
|
7
7
|
import os
|
|
8
|
+
import sys
|
|
8
9
|
import tempfile
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
|
|
@@ -44,6 +45,17 @@ WARNING = f"{Fore.YELLOW}"
|
|
|
44
45
|
HIGHLIGHT = f"{Fore.MAGENTA}{Style.BRIGHT}"
|
|
45
46
|
RESET = Style.RESET_ALL
|
|
46
47
|
|
|
48
|
+
|
|
49
|
+
# -------------------------------------------------------------------
|
|
50
|
+
# TTY detection
|
|
51
|
+
# -------------------------------------------------------------------
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _is_interactive():
|
|
55
|
+
"""Return True when both stdin and stdout are attached to a TTY."""
|
|
56
|
+
return sys.stdin.isatty() and sys.stdout.isatty()
|
|
57
|
+
|
|
58
|
+
|
|
47
59
|
# Lazy loading for Rich components to improve startup performance
|
|
48
60
|
_console = None
|
|
49
61
|
|
|
@@ -19,6 +19,7 @@ _BOOLEAN_FALSE_VALUES = {"false", "0", "no"}
|
|
|
19
19
|
_CONFIG_KEY_DISPLAY_NAMES = {
|
|
20
20
|
"auto_integrate": "auto-integrate",
|
|
21
21
|
"temp_dir": "temp-dir",
|
|
22
|
+
"copilot_cowork_skills_dir": "copilot-cowork-skills-dir",
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
|
|
@@ -52,7 +53,7 @@ def _get_config_getters():
|
|
|
52
53
|
|
|
53
54
|
def _valid_config_keys() -> str:
|
|
54
55
|
"""Return valid config keys for messages."""
|
|
55
|
-
return ", ".join(["auto-integrate", "temp-dir"])
|
|
56
|
+
return ", ".join(["auto-integrate", "temp-dir", "copilot-cowork-skills-dir"])
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
@click.group(help="Configure APM CLI", invoke_without_command=True)
|
|
@@ -130,6 +131,18 @@ def config(ctx):
|
|
|
130
131
|
if _temp_dir_val:
|
|
131
132
|
config_table.add_row("", "Temp Directory", _temp_dir_val)
|
|
132
133
|
|
|
134
|
+
from ..core.experimental import is_enabled as _is_enabled
|
|
135
|
+
|
|
136
|
+
if _is_enabled("copilot_cowork"):
|
|
137
|
+
from ..config import get_copilot_cowork_skills_dir as _get_csd
|
|
138
|
+
|
|
139
|
+
_csd_val = _get_csd()
|
|
140
|
+
config_table.add_row(
|
|
141
|
+
"",
|
|
142
|
+
"Cowork Skills Dir",
|
|
143
|
+
_csd_val if _csd_val else "Not set (using auto-detection)",
|
|
144
|
+
)
|
|
145
|
+
|
|
133
146
|
console.print(config_table)
|
|
134
147
|
|
|
135
148
|
except (ImportError, NameError):
|
|
@@ -157,6 +170,17 @@ def config(ctx):
|
|
|
157
170
|
if _temp_dir_fb:
|
|
158
171
|
click.echo(f" Temp Directory: {_temp_dir_fb}")
|
|
159
172
|
|
|
173
|
+
from ..core.experimental import is_enabled as _is_enabled_fb
|
|
174
|
+
|
|
175
|
+
if _is_enabled_fb("copilot_cowork"):
|
|
176
|
+
from ..config import get_copilot_cowork_skills_dir as _get_csd_fb
|
|
177
|
+
|
|
178
|
+
_csd_fb = _get_csd_fb()
|
|
179
|
+
click.echo(
|
|
180
|
+
f" Cowork Skills Dir: "
|
|
181
|
+
f"{_csd_fb if _csd_fb else 'Not set (using auto-detection)'}"
|
|
182
|
+
)
|
|
183
|
+
|
|
160
184
|
|
|
161
185
|
@config.command(help="Set a configuration value")
|
|
162
186
|
@click.argument("key")
|
|
@@ -171,6 +195,27 @@ def set(key, value):
|
|
|
171
195
|
from ..config import get_temp_dir, set_temp_dir
|
|
172
196
|
|
|
173
197
|
logger = CommandLogger("config set")
|
|
198
|
+
if key == "copilot-cowork-skills-dir":
|
|
199
|
+
from ..core.experimental import is_enabled
|
|
200
|
+
|
|
201
|
+
if not is_enabled("copilot_cowork"):
|
|
202
|
+
logger.error(
|
|
203
|
+
"copilot-cowork-skills-dir requires the copilot-cowork experimental flag. "
|
|
204
|
+
"Run: apm experimental enable copilot-cowork"
|
|
205
|
+
)
|
|
206
|
+
sys.exit(1)
|
|
207
|
+
from ..config import get_copilot_cowork_skills_dir, set_copilot_cowork_skills_dir
|
|
208
|
+
|
|
209
|
+
try:
|
|
210
|
+
set_copilot_cowork_skills_dir(value)
|
|
211
|
+
logger.success(
|
|
212
|
+
f"Cowork skills directory set to: {get_copilot_cowork_skills_dir()}"
|
|
213
|
+
)
|
|
214
|
+
except ValueError as exc:
|
|
215
|
+
logger.error(str(exc))
|
|
216
|
+
sys.exit(1)
|
|
217
|
+
return
|
|
218
|
+
|
|
174
219
|
if key == "temp-dir":
|
|
175
220
|
try:
|
|
176
221
|
set_temp_dir(value)
|
|
@@ -218,6 +263,18 @@ def get(key):
|
|
|
218
263
|
logger = CommandLogger("config get")
|
|
219
264
|
getters = _get_config_getters()
|
|
220
265
|
if key:
|
|
266
|
+
if key == "copilot-cowork-skills-dir":
|
|
267
|
+
from ..config import get_copilot_cowork_skills_dir
|
|
268
|
+
|
|
269
|
+
value = get_copilot_cowork_skills_dir()
|
|
270
|
+
if value is None:
|
|
271
|
+
click.echo(
|
|
272
|
+
"copilot-cowork-skills-dir: Not set (using auto-detection)"
|
|
273
|
+
)
|
|
274
|
+
else:
|
|
275
|
+
click.echo(f"copilot-cowork-skills-dir: {value}")
|
|
276
|
+
return
|
|
277
|
+
|
|
221
278
|
if key == "temp-dir":
|
|
222
279
|
value = get_temp_dir()
|
|
223
280
|
if value is None:
|
|
@@ -244,3 +301,44 @@ def get(key):
|
|
|
244
301
|
click.echo(f" auto-integrate: {get_auto_integrate()}")
|
|
245
302
|
temp_dir = get_temp_dir()
|
|
246
303
|
click.echo(f" temp-dir: {temp_dir if temp_dir is not None else 'Not set (using system default)'}")
|
|
304
|
+
|
|
305
|
+
from ..core.experimental import is_enabled as _is_enabled_get
|
|
306
|
+
|
|
307
|
+
if _is_enabled_get("copilot_cowork"):
|
|
308
|
+
from ..config import get_copilot_cowork_skills_dir as _get_csd_get
|
|
309
|
+
|
|
310
|
+
csd = _get_csd_get()
|
|
311
|
+
click.echo(
|
|
312
|
+
f" copilot-cowork-skills-dir: "
|
|
313
|
+
f"{csd if csd is not None else 'Not set (using auto-detection)'}"
|
|
314
|
+
)
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
@config.command(help="Unset a configuration value")
|
|
318
|
+
@click.argument("key")
|
|
319
|
+
def unset(key):
|
|
320
|
+
"""Unset (remove) a configuration value.
|
|
321
|
+
|
|
322
|
+
Examples:
|
|
323
|
+
apm config unset temp-dir
|
|
324
|
+
apm config unset copilot-cowork-skills-dir
|
|
325
|
+
"""
|
|
326
|
+
logger = CommandLogger("config unset")
|
|
327
|
+
|
|
328
|
+
if key == "temp-dir":
|
|
329
|
+
from ..config import unset_temp_dir
|
|
330
|
+
|
|
331
|
+
unset_temp_dir()
|
|
332
|
+
logger.success("Temporary directory configuration removed")
|
|
333
|
+
return
|
|
334
|
+
|
|
335
|
+
if key == "copilot-cowork-skills-dir":
|
|
336
|
+
from ..config import unset_copilot_cowork_skills_dir
|
|
337
|
+
|
|
338
|
+
unset_copilot_cowork_skills_dir()
|
|
339
|
+
logger.success("Cowork skills directory configuration removed")
|
|
340
|
+
return
|
|
341
|
+
|
|
342
|
+
logger.error(f"Unknown configuration key: '{key}'")
|
|
343
|
+
logger.progress(f"Valid keys: {_valid_config_keys()}")
|
|
344
|
+
sys.exit(1)
|