agentbundle 0.47.1__tar.gz → 0.51.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.
- {agentbundle-0.47.1/agentbundle.egg-info → agentbundle-0.51.0}/PKG-INFO +91 -5
- {agentbundle-0.47.1 → agentbundle-0.51.0}/README-pypi.md +89 -4
- {agentbundle-0.47.1 → agentbundle-0.51.0}/README.md +16 -4
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +57 -12
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/manifest.json +1 -1
- {agentbundle-0.47.1/agentbundle/catalogue_tooling → agentbundle-0.51.0/agentbundle/_data}/file_safety.py +3 -3
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/workspace_status_engine.py +139 -11
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projection_io.py +2 -2
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue.py +20 -3
- agentbundle-0.51.0/agentbundle/catalogue_fetch/__init__.py +222 -0
- agentbundle-0.51.0/agentbundle/catalogue_fetch/direct_http.py +330 -0
- agentbundle-0.51.0/agentbundle/catalogue_fetch/jfrog_cli.py +1007 -0
- agentbundle-0.51.0/agentbundle/catalogue_fetch/models.py +50 -0
- {agentbundle-0.47.1/agentbundle/_data → agentbundle-0.51.0/agentbundle/catalogue_tooling}/file_safety.py +3 -3
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/initialise_self_hosted.py +229 -83
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/cli.py +148 -0
- agentbundle-0.51.0/agentbundle/commands/catalogue_sync.py +3665 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/direct_source.py +2 -2
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/https_catalogue.py +201 -232
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/safety.py +210 -4
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/statelock.py +2 -2
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/version.py +1 -1
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/workspace_mcp.py +224 -72
- {agentbundle-0.47.1 → agentbundle-0.51.0/agentbundle.egg-info}/PKG-INFO +91 -5
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle.egg-info/SOURCES.txt +16 -0
- agentbundle-0.51.0/agentbundle.egg-info/requires.txt +4 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/pyproject.toml +2 -2
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_agent_plugin_projection.py +3 -0
- agentbundle-0.51.0/tests/contracts/test_catalogue_fetch_credential_boundary.py +504 -0
- agentbundle-0.51.0/tests/fixtures/catalogue_sync/adapter_contract_major_mismatch/pack.toml +6 -0
- agentbundle-0.51.0/tests/integration/test_jfrog_cli_contract.py +276 -0
- agentbundle-0.51.0/tests/integration/test_portable_catalogue_authentication.py +494 -0
- agentbundle-0.51.0/tests/test_workspace_mcp_git_scope.py +926 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_layout_override.py +111 -1
- agentbundle-0.51.0/tests/unit/conftest.py +114 -0
- agentbundle-0.51.0/tests/unit/test_catalogue.py +73 -0
- agentbundle-0.51.0/tests/unit/test_catalogue_fetch.py +1264 -0
- agentbundle-0.51.0/tests/unit/test_catalogue_fetch_jfrog.py +1449 -0
- agentbundle-0.51.0/tests/unit/test_catalogue_sync.py +6719 -0
- agentbundle-0.51.0/tests/unit/test_catalogue_sync_fixture_set.py +45 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_self_hosted_init.py +392 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_https_catalogue.py +194 -79
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_safety.py +245 -0
- agentbundle-0.47.1/agentbundle.egg-info/requires.txt +0 -3
- {agentbundle-0.47.1 → agentbundle-0.51.0}/MANIFEST.in +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/__main__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/agent-plugin-extension-namespaces.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/agent-plugin-extension-namespaces.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-index.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/CLAUDE.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/evals/eval_queries.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/profiles/CLAUDE.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_gemini_admissibility.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_layout_declared_section.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_shared_library_boundaries.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/close_work.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/cooling.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/distribution-routes.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/distribution-routes.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/knowledge-captured-observation.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/marketplace-entry.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/public-contracts.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/LICENSE.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/PROVENANCE.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/mcp.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/plugin.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/work_intake_refresh.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/workspace_status_prune.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/bounded_metadata.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/_sweep_guard.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/hook_wiring_rules.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/main.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/plugin_hooks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/per-pack-agent-plugin.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/route_agent_plugin.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/route_apm.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/route_claude_plugins.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/route_lookup.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/contracts_inspector.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/index_generator.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/journey_validator.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/manifest.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/okf_discovery.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/package.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/catalogue_tooling/version_ranges.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/categories.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_contracts.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_index.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/direct_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/direct_source_acquisition.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/direct_source_state.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/direct_validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/oplog.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/render.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/system_trust.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/user_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/conftest.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/setup.cfg +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/templates/install-marker.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/_direct_acquisition.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/_support.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/claude-code-2.1.226-hook-events.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/claude-code-2.1.228-hook-events.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/agents/bar.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/commands/qux.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/baz.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/qux.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/core/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/governance-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/governance-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/governance-extras/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/product-documentation/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/product-documentation/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/product-documentation/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/fixtures/recipes/bogus-target.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_claude_code.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_codex.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_copilot.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_cursor.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_gemini.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_kiro.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_agent_boundary_metadata_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_build_ships_seeds.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_contract_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_contract_v07.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_contract_v08.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_distribution_route_contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_distribution_route_golden.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_distribution_route_resolution.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_end_to_end_build.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_hook_wiring_rules.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_lint_packs.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_pack_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_pack_schema_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_pipeline.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_plugin_hooks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_plugin_publication_gates.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_policy_registry_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_projectable_subset.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_projection_io.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_projections_merge_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_route_lookup.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_scope_rails.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_security.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_self_host_check.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_self_host_metadata_policy.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_sequential_implementer_dispatch_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_shared_libs_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_user_libs_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/build_pipeline/test_writers_emit_lf.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/conftest.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/contracts/test_agentbundle_show_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/contracts/test_skill_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/adapt/.adapt-discovery.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/adapt/values.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/catalogue.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/.gitkeep +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/_example/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/_example/evals/eval_queries.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/packs/_example/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/profiles/.gitkeep +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/profiles/_example/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/blank_catalogue/profiles/_example/profile.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield/values.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/AGENTS.upstream.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/DESIGN.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/EXPECTED_TREE.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/docs/CHARTER.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/docs/guides/how-to/index.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt/docs/howto/getting-started.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt-expected/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt-expected/docs/CHARTER.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/.adapt-discovery.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/state.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/catalogue.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/hook-wiring/example.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/scripts/run.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/JOURNEY.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/packs/pack-without-journey/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/catalogue_wave4/profiles/test-profile.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/cognitive-load-hosts.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag/scripts/cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag-derived/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag-derived/scripts/cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag-normalised/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/argv-flag-normalised/scripts/cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/conforming/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/conforming/scripts/cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/dotfile-grep/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/dotfile-grep/scripts/leak.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/dotfile-with-optout/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/dotfile-with-optout/scripts/legit.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/mcp-server-headers/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/mcp-server-headers/scripts/cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/creds/skills/missing-dont-block/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/direct/ac35_corpus_verdicts.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/direct/golden_state_0_5.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/distribution-routes/golden.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/distribution-routes/witness-packs/portable/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/distribution-routes/witness-packs/portable/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/LICENSE-APACHE +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/LICENSE-MIT +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/catalogue.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/alpha/seeds/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/beta/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/external_catalogue/profiles/example.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/agents/helper.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/commands/cmd.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/hook-wiring/run.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/hooks/run.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/install/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/kiro_ide_hook/ask_agent_basic.kiro.hook +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/kiro_ide_hook/run_command_with_placeholder.kiro.hook +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/lint_packs/clean/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/lint_packs/clean/seeds/README.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/list-installed/golden_120col.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/list-installed/golden_80col.txt +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/list_packs/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/list_packs/catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/.apm/skills/local-test/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/cc-user-hooks/.apm/hook-wiring/on-prompt.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/cc-user-hooks/.apm/hooks/on-prompt.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/cc-user-hooks/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-repo-hooks/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-user-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-user-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-user-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/kiro-user-hooks/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-missing-attach/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-pascal-events/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/scaffold/test-pack/seeds/AGENTS.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/scaffold/test-pack/seeds/_agents-footer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/scaffold/test-pack/seeds/docs/CHARTER.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/show_contract/agentbundle-show.schema.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/show_contract/catalogue.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/show_contract/installed_state.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/validate/bad_recipe_pack/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/validate/malformed_pack/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/validate/valid_pack/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/fixtures/validate/version_mismatch_pack/pack.toml +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_adapt_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_adapt_dual_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_adapt_preflight_detection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_adapt_schema_migration.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_apm_install_route.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_blank_catalogue.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_brownfield_adapt_end_to_end.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_brownfield_round_trip.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_brownfield_user_home_fixture.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_build_check_drift_gates.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_build_derivation_apm.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_build_derivation_claude_plugins.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_init.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_adapter_compat.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_dependencies.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_external_portability.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_fixture_checks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_marketplace.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_output_drift.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_package_preflight.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_plugin_path.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_profile_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_verify_step1.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_wave4_index_generator.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_wave4_integration.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_wave4_journey_validator.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_catalogue_wave4_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_cc_user_hooks_fixture.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_claude_plugins_install_route.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_config_cascade.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_credential_brokers_pack_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_credentials_wheel.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_direct_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_discovery_schema_cross_consumer.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_editable_source_detection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_fixtures_validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_hook_wiring_ingress.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_adapt_chain.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_converters_user_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_copilot_full_parity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_core_smoke.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_default_source.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_dependencies_gate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_dual_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_layout_is_best_effort.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_orphan_reshape.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_pack_metadata_shape.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_profile.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_profile_live.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_repo_scope_per_adapter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_research_user_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_seed_delivery.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_session_start_wiring.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_upgrade_offer.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_user_hooks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_install_user_scope_allowed_adapters.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_kiro_ide_hook_e2e.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_kiro_repo_hooks_fixture.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_kiro_user_hooks_fixture.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_list_packs_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_local_scope_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_marketplace_entry_validation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_marketplace_manifest_regression.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_multi_pack_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_orphan_cleanup_respects_foreign_state.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_plugin_route_membership.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_recommends_cross_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_reconcile.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_reserved_path_filter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_scaffold_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_self_host_schema_migration.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_self_host_sweep_respects_state.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_shared_prefix_coexistence.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_show_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_tier_invariants.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_trust_fallback_tls.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_uninstall_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_uninstall_user_hooks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_upgrade_attach_to_agent.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_upgrade_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_upgrade_user_hooks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_version_gate_matrix.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_workspace_mcp_git_fsm.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/integration/test_zipapp.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/performance/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/performance/test_direct_family2_budget_cost.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/test_workspace_mcp_tools.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/__init__.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_adapt_discovery_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_adapter_symlink_policy.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_append_layout_section.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_architect_readme_install_command.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_ci_contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_curation_deps.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_init_cli_self_hosted.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_pack_defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_self_hosted_export_removal.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_skill_spec_lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_archive.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_build.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_file_safety.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_foundation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_identity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_init.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_lint.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_package.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_self_host.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_source_package.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_tooling_verify.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_trust_fallback.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave2_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave2_validation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave3_contracts_cli.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave3_contracts_inspector.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave3_init_nextsteps.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_catalogue_wave3_offline_navigation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_catalogue_optional.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_help_lists_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_list_targets_help.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_namespace_fixture.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_path_normalisation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_profile_surface.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cli_scope_flags.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_codex_agent_toml.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_codex_projection_modes.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_cognitive_load_seed_contract.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_collect_tree_symlinks.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_common_classify_seeds.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_config_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_configured_adapter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_confirm_helper.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_contract_parity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_contract_v0_3_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_copilot_agent_md.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_copilot_hooks_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_copilot_user_scope_wiring.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_credbroker_lint_hardening.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_dependencies_batch.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_diff_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_admission.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_architecture_controls.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_diagnostics.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_lifecycle_facts.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_source_acquisition.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_source_state.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_upgrade.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_direct_validate.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_footprint_ownership.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_init_state_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_argparse_adapter_flag.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_argparse_emit_install_routes.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_defaults_preferred_adapter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_event_dropped_wirings.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_first_value_handoff.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_force_help.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_inband_detection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_messages.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_messages_repo_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_refusal_ordering.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_install_state_provenance.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_kiro_ide_hook_projection.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_kiro_ide_hook_rail.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_kiro_ide_hook_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_layout_bases_anchoring.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_lint_agent_artifacts_metadata_auth.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_list_installed_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_list_installed_status.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_list_targets_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_exclude_git_cache.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t10_uninstall.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t12_show.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t2_resolve.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t3_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t4_state_path.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t5_list_installed.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t7_install_gates.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t8_install.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_local_scope_t9_exclude.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_marker_schema_version_parity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_merge_into_agent_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_multi_adapter_disambiguator.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_nested_symlink_hardening.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_offer_upgrade_namespace.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_okf_discovery.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_org_bootstrap.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_orphan_sweep_guards.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_pack_config_api.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_pack_inventory.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_pack_layout_section_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_package_catalogue.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_packstate_source_provenance.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_pipeline_phase_order.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_plugin_scope_filter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_profile_reader.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_render.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_render_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_render_table.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_resolve_state_path.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_resolve_target_adapter_user_config.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_resolve_user_scope_target_adapter.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_route_surface_parity.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_safety_repo_scope_prefixes.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_safety_scan_per_pack_scoping.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_scaffold_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_scope.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_self_host_windows.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_shared_prefix_disclosure.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_source_conflict_guard.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_source_defaults.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_state_v01_refuse_write.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_state_v02.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_state_v0_4_schema.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_statelock.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_statelock_hardening.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_system_trust.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_target_resolver.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_toml_emitters.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_unresolved_markers.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_upgrade_bulk_all.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_upgrade_recap.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_upgrade_source_inference.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_user_config_io.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_user_config_isolation.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_user_config_path.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_user_config_source.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_user_merge_json.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_validate_attach_to_agent.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_validate_categories.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_validate_cmd.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_validate_hook_wiring_per_file_compatibility.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_values_from_shapes.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_version.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_windows_direct_suite_registration.py +0 -0
- {agentbundle-0.47.1 → agentbundle-0.51.0}/tests/unit/test_workspace_mcp_events_poller.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.51.0
|
|
4
4
|
Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
|
|
5
5
|
Author-email: eugenelim <eugenelim@users.noreply.github.com>
|
|
6
6
|
License-Expression: Apache-2.0 OR MIT
|
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
16
|
Requires-Python: >=3.11
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: credbroker<0.8,>=0.7
|
|
18
19
|
Provides-Extra: lint
|
|
19
20
|
Requires-Dist: pyyaml>=6.0; extra == "lint"
|
|
20
21
|
|
|
@@ -34,6 +35,79 @@ python -m pip install agentbundle
|
|
|
34
35
|
|
|
35
36
|
Requires Python 3.11+. Runs on macOS, Linux, and Windows.
|
|
36
37
|
|
|
38
|
+
## What's new in 0.51.0
|
|
39
|
+
|
|
40
|
+
HTTPS catalogue acquisition now selects credentials automatically. Set
|
|
41
|
+
`AGENTBUNDLE_HTTP_BEARER_TOKEN` for a bearer token, configure a JFrog CLI 2.105.0+
|
|
42
|
+
profile with `jf login` or `jf config add` (and optionally name it with
|
|
43
|
+
`JFROG_CLI_SERVER_ID`), or provide an exact-machine `.netrc` record for the
|
|
44
|
+
catalogue host. Public catalogues still work with no credential setup. AgentBundle
|
|
45
|
+
picks the first available source and stops — no fallback across credential types.
|
|
46
|
+
|
|
47
|
+
On a corporate network, set `AGENTBUNDLE_CA_BUNDLE` for bearer, `.netrc`, and
|
|
48
|
+
public catalogues. For the JFrog CLI path on Linux, set `SSL_CERT_FILE` or
|
|
49
|
+
`SSL_CERT_DIR` instead; `AGENTBUNDLE_CA_BUNDLE` does not reach the `jf`
|
|
50
|
+
subprocess. On macOS, add the corporate CA to the system keychain for the JFrog
|
|
51
|
+
CLI path.
|
|
52
|
+
|
|
53
|
+
## What's new in 0.50.0
|
|
54
|
+
|
|
55
|
+
`agentbundle catalogue sync --package <name>` writes now instead of refusing.
|
|
56
|
+
`credbroker` syncs `packages/credbroker/`; `agentbundle` syncs the whole
|
|
57
|
+
vendored tooling root under `--tooling vendored`. Packages are written last,
|
|
58
|
+
and a failed package write rolls the run back.
|
|
59
|
+
|
|
60
|
+
A vendored sync refuses when the target supplies the `agentbundle` you are
|
|
61
|
+
running — replacing your own engine mid-run means what executes afterwards is
|
|
62
|
+
not what you reviewed.
|
|
63
|
+
|
|
64
|
+
## What's new in 0.49.0
|
|
65
|
+
|
|
66
|
+
`agentbundle catalogue sync` can now write. Run it with neither `--dry-run`
|
|
67
|
+
nor `--check` and it asks for confirmation, then applies the same plan
|
|
68
|
+
`--dry-run` would have printed — updating unedited files, keeping your edits
|
|
69
|
+
behind a `.upstream.<ext>` companion, and removing paths the source stopped
|
|
70
|
+
shipping. Pass `--yes` to skip the prompt in a script or CI job. Four flags
|
|
71
|
+
scope a run to part of the catalogue: `--pack` (repeatable), `--profile`,
|
|
72
|
+
`--guides`, and `--package` (reserved; refuses for now — package sync is not
|
|
73
|
+
shipped yet). A source affording a resolved ref or a verified digest now has
|
|
74
|
+
that value recorded, so a later `--check` compares against it.
|
|
75
|
+
|
|
76
|
+
**Breaking:** the `sync` subcommand no longer resolves abbreviated flag
|
|
77
|
+
names. `--guides` is now a real flag — the scoping flag above — so a command
|
|
78
|
+
that relied on `--guides selected` resolving to `--guides-mode` now errors;
|
|
79
|
+
spell `--guides-mode selected` in full.
|
|
80
|
+
|
|
81
|
+
## What's new in 0.48.0
|
|
82
|
+
|
|
83
|
+
`agentbundle catalogue sync` is a new command. It checks a derived catalogue
|
|
84
|
+
against its source without changing any file. `--dry-run` prints what would
|
|
85
|
+
update, what would keep your edits behind a `.upstream.<ext>` companion file,
|
|
86
|
+
and what the source no longer has. `--check` answers whether your catalogue
|
|
87
|
+
still matches its source.
|
|
88
|
+
|
|
89
|
+
Sync accepts every source form `catalogue init` does — a local path, a
|
|
90
|
+
`git+https://` URL, or a `catalogue+https://` descriptor — and reports which
|
|
91
|
+
of those affords a verified digest. It also warns, without ever blocking the
|
|
92
|
+
run, when a selected pack's version has moved in the source.
|
|
93
|
+
|
|
94
|
+
## What's new in 0.47.3
|
|
95
|
+
|
|
96
|
+
**Fixed:** `git_commit` no longer stages files outside the item it was
|
|
97
|
+
dispatched for. If the `output_dir` you configure contains `*`, `?`, `[`, `{`
|
|
98
|
+
or `}`, that value cannot describe a commit scope, so `git_commit` now refuses
|
|
99
|
+
it with an error naming the section instead of committing from a wider
|
|
100
|
+
directory. A base containing `*` was the one that widened the scope; the others
|
|
101
|
+
matched nothing and now say so. `git_status`, `git_branch` and `git_push` keep
|
|
102
|
+
working. Rename the directory to one without those characters to commit again.
|
|
103
|
+
|
|
104
|
+
## What's new in 0.47.2
|
|
105
|
+
|
|
106
|
+
**Fixed:** `workspace_status` now applies the same character rules to your
|
|
107
|
+
configured `output_dir` that it applies to every other path it reports. A value
|
|
108
|
+
using anything outside letters, digits and `. _ - /` is reported as no pattern,
|
|
109
|
+
with a warning naming the section, instead of being passed through.
|
|
110
|
+
|
|
37
111
|
## What's new in 0.47.1
|
|
38
112
|
|
|
39
113
|
**Fixed:** `workspace_status` now reports the output path your
|
|
@@ -486,9 +560,21 @@ agentbundle install --pack core
|
|
|
486
560
|
```
|
|
487
561
|
|
|
488
562
|
The channel descriptor points to an immutable versioned archive; agentbundle
|
|
489
|
-
fetches, verifies its SHA-256 digest, and installs.
|
|
490
|
-
|
|
491
|
-
|
|
563
|
+
fetches, verifies its SHA-256 digest, and installs.
|
|
564
|
+
|
|
565
|
+
AgentBundle picks credentials automatically: set `AGENTBUNDLE_HTTP_BEARER_TOKEN`
|
|
566
|
+
for a bearer token, configure a JFrog CLI 2.105.0+ profile with `jf login` or
|
|
567
|
+
`jf config add` (optionally name it with `JFROG_CLI_SERVER_ID`), or provide an
|
|
568
|
+
exact-machine `.netrc` record. Public catalogues need no credential setup.
|
|
569
|
+
AgentBundle picks the first available source and does not fall back across types.
|
|
570
|
+
AgentBundle never stores or prints the catalogue credential, and never forwards
|
|
571
|
+
it to another origin — redirects that leave the origin are rejected.
|
|
572
|
+
|
|
573
|
+
For bearer, `.netrc`, and public catalogues, set `AGENTBUNDLE_CA_BUNDLE` for a
|
|
574
|
+
private CA. For the JFrog CLI path on Linux, use `SSL_CERT_FILE` or
|
|
575
|
+
`SSL_CERT_DIR`; `AGENTBUNDLE_CA_BUNDLE` does not reach the `jf` subprocess. On
|
|
576
|
+
macOS, add the corporate CA to the system keychain for the JFrog CLI path — `jf
|
|
577
|
+
api` reads only the system keychain there and ignores `~/.jfrog/security/certs/`.
|
|
492
578
|
|
|
493
579
|
**JSON output for CI pipelines:**
|
|
494
580
|
|
|
@@ -867,7 +953,7 @@ not the environment — compare them with
|
|
|
867
953
|
|
|
868
954
|
## Credentials
|
|
869
955
|
|
|
870
|
-
|
|
956
|
+
Skills resolve their own credentials through [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach. AgentBundle uses `credbroker` only to read protected catalogues.
|
|
871
957
|
|
|
872
958
|
## Learn more
|
|
873
959
|
|
|
@@ -14,6 +14,79 @@ python -m pip install agentbundle
|
|
|
14
14
|
|
|
15
15
|
Requires Python 3.11+. Runs on macOS, Linux, and Windows.
|
|
16
16
|
|
|
17
|
+
## What's new in 0.51.0
|
|
18
|
+
|
|
19
|
+
HTTPS catalogue acquisition now selects credentials automatically. Set
|
|
20
|
+
`AGENTBUNDLE_HTTP_BEARER_TOKEN` for a bearer token, configure a JFrog CLI 2.105.0+
|
|
21
|
+
profile with `jf login` or `jf config add` (and optionally name it with
|
|
22
|
+
`JFROG_CLI_SERVER_ID`), or provide an exact-machine `.netrc` record for the
|
|
23
|
+
catalogue host. Public catalogues still work with no credential setup. AgentBundle
|
|
24
|
+
picks the first available source and stops — no fallback across credential types.
|
|
25
|
+
|
|
26
|
+
On a corporate network, set `AGENTBUNDLE_CA_BUNDLE` for bearer, `.netrc`, and
|
|
27
|
+
public catalogues. For the JFrog CLI path on Linux, set `SSL_CERT_FILE` or
|
|
28
|
+
`SSL_CERT_DIR` instead; `AGENTBUNDLE_CA_BUNDLE` does not reach the `jf`
|
|
29
|
+
subprocess. On macOS, add the corporate CA to the system keychain for the JFrog
|
|
30
|
+
CLI path.
|
|
31
|
+
|
|
32
|
+
## What's new in 0.50.0
|
|
33
|
+
|
|
34
|
+
`agentbundle catalogue sync --package <name>` writes now instead of refusing.
|
|
35
|
+
`credbroker` syncs `packages/credbroker/`; `agentbundle` syncs the whole
|
|
36
|
+
vendored tooling root under `--tooling vendored`. Packages are written last,
|
|
37
|
+
and a failed package write rolls the run back.
|
|
38
|
+
|
|
39
|
+
A vendored sync refuses when the target supplies the `agentbundle` you are
|
|
40
|
+
running — replacing your own engine mid-run means what executes afterwards is
|
|
41
|
+
not what you reviewed.
|
|
42
|
+
|
|
43
|
+
## What's new in 0.49.0
|
|
44
|
+
|
|
45
|
+
`agentbundle catalogue sync` can now write. Run it with neither `--dry-run`
|
|
46
|
+
nor `--check` and it asks for confirmation, then applies the same plan
|
|
47
|
+
`--dry-run` would have printed — updating unedited files, keeping your edits
|
|
48
|
+
behind a `.upstream.<ext>` companion, and removing paths the source stopped
|
|
49
|
+
shipping. Pass `--yes` to skip the prompt in a script or CI job. Four flags
|
|
50
|
+
scope a run to part of the catalogue: `--pack` (repeatable), `--profile`,
|
|
51
|
+
`--guides`, and `--package` (reserved; refuses for now — package sync is not
|
|
52
|
+
shipped yet). A source affording a resolved ref or a verified digest now has
|
|
53
|
+
that value recorded, so a later `--check` compares against it.
|
|
54
|
+
|
|
55
|
+
**Breaking:** the `sync` subcommand no longer resolves abbreviated flag
|
|
56
|
+
names. `--guides` is now a real flag — the scoping flag above — so a command
|
|
57
|
+
that relied on `--guides selected` resolving to `--guides-mode` now errors;
|
|
58
|
+
spell `--guides-mode selected` in full.
|
|
59
|
+
|
|
60
|
+
## What's new in 0.48.0
|
|
61
|
+
|
|
62
|
+
`agentbundle catalogue sync` is a new command. It checks a derived catalogue
|
|
63
|
+
against its source without changing any file. `--dry-run` prints what would
|
|
64
|
+
update, what would keep your edits behind a `.upstream.<ext>` companion file,
|
|
65
|
+
and what the source no longer has. `--check` answers whether your catalogue
|
|
66
|
+
still matches its source.
|
|
67
|
+
|
|
68
|
+
Sync accepts every source form `catalogue init` does — a local path, a
|
|
69
|
+
`git+https://` URL, or a `catalogue+https://` descriptor — and reports which
|
|
70
|
+
of those affords a verified digest. It also warns, without ever blocking the
|
|
71
|
+
run, when a selected pack's version has moved in the source.
|
|
72
|
+
|
|
73
|
+
## What's new in 0.47.3
|
|
74
|
+
|
|
75
|
+
**Fixed:** `git_commit` no longer stages files outside the item it was
|
|
76
|
+
dispatched for. If the `output_dir` you configure contains `*`, `?`, `[`, `{`
|
|
77
|
+
or `}`, that value cannot describe a commit scope, so `git_commit` now refuses
|
|
78
|
+
it with an error naming the section instead of committing from a wider
|
|
79
|
+
directory. A base containing `*` was the one that widened the scope; the others
|
|
80
|
+
matched nothing and now say so. `git_status`, `git_branch` and `git_push` keep
|
|
81
|
+
working. Rename the directory to one without those characters to commit again.
|
|
82
|
+
|
|
83
|
+
## What's new in 0.47.2
|
|
84
|
+
|
|
85
|
+
**Fixed:** `workspace_status` now applies the same character rules to your
|
|
86
|
+
configured `output_dir` that it applies to every other path it reports. A value
|
|
87
|
+
using anything outside letters, digits and `. _ - /` is reported as no pattern,
|
|
88
|
+
with a warning naming the section, instead of being passed through.
|
|
89
|
+
|
|
17
90
|
## What's new in 0.47.1
|
|
18
91
|
|
|
19
92
|
**Fixed:** `workspace_status` now reports the output path your
|
|
@@ -466,9 +539,21 @@ agentbundle install --pack core
|
|
|
466
539
|
```
|
|
467
540
|
|
|
468
541
|
The channel descriptor points to an immutable versioned archive; agentbundle
|
|
469
|
-
fetches, verifies its SHA-256 digest, and installs.
|
|
470
|
-
|
|
471
|
-
|
|
542
|
+
fetches, verifies its SHA-256 digest, and installs.
|
|
543
|
+
|
|
544
|
+
AgentBundle picks credentials automatically: set `AGENTBUNDLE_HTTP_BEARER_TOKEN`
|
|
545
|
+
for a bearer token, configure a JFrog CLI 2.105.0+ profile with `jf login` or
|
|
546
|
+
`jf config add` (optionally name it with `JFROG_CLI_SERVER_ID`), or provide an
|
|
547
|
+
exact-machine `.netrc` record. Public catalogues need no credential setup.
|
|
548
|
+
AgentBundle picks the first available source and does not fall back across types.
|
|
549
|
+
AgentBundle never stores or prints the catalogue credential, and never forwards
|
|
550
|
+
it to another origin — redirects that leave the origin are rejected.
|
|
551
|
+
|
|
552
|
+
For bearer, `.netrc`, and public catalogues, set `AGENTBUNDLE_CA_BUNDLE` for a
|
|
553
|
+
private CA. For the JFrog CLI path on Linux, use `SSL_CERT_FILE` or
|
|
554
|
+
`SSL_CERT_DIR`; `AGENTBUNDLE_CA_BUNDLE` does not reach the `jf` subprocess. On
|
|
555
|
+
macOS, add the corporate CA to the system keychain for the JFrog CLI path — `jf
|
|
556
|
+
api` reads only the system keychain there and ignores `~/.jfrog/security/certs/`.
|
|
472
557
|
|
|
473
558
|
**JSON output for CI pipelines:**
|
|
474
559
|
|
|
@@ -847,7 +932,7 @@ not the environment — compare them with
|
|
|
847
932
|
|
|
848
933
|
## Credentials
|
|
849
934
|
|
|
850
|
-
|
|
935
|
+
Skills resolve their own credentials through [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach. AgentBundle uses `credbroker` only to read protected catalogues.
|
|
851
936
|
|
|
852
937
|
## Learn more
|
|
853
938
|
|
|
@@ -106,9 +106,21 @@ agentbundle install --pack core
|
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
The channel descriptor points to an immutable versioned archive; agentbundle
|
|
109
|
-
fetches, verifies its SHA-256 digest, and installs.
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
fetches, verifies its SHA-256 digest, and installs.
|
|
110
|
+
|
|
111
|
+
AgentBundle picks credentials automatically: set `AGENTBUNDLE_HTTP_BEARER_TOKEN`
|
|
112
|
+
for a bearer token, configure a JFrog CLI 2.105.0+ profile with `jf login` or
|
|
113
|
+
`jf config add` (optionally name it with `JFROG_CLI_SERVER_ID`), or provide an
|
|
114
|
+
exact-machine `.netrc` record. Public catalogues need no credential setup.
|
|
115
|
+
AgentBundle picks the first available source and does not fall back across types.
|
|
116
|
+
AgentBundle never stores or prints the catalogue credential, and never forwards
|
|
117
|
+
it to another origin — redirects that leave the origin are rejected.
|
|
118
|
+
|
|
119
|
+
For bearer, `.netrc`, and public catalogues, set `AGENTBUNDLE_CA_BUNDLE` for a
|
|
120
|
+
private CA. For the JFrog CLI path on Linux, use `SSL_CERT_FILE` or
|
|
121
|
+
`SSL_CERT_DIR`; `AGENTBUNDLE_CA_BUNDLE` does not reach the `jf` subprocess. On
|
|
122
|
+
macOS, add the corporate CA to the system keychain for the JFrog CLI path — `jf
|
|
123
|
+
api` reads only the system keychain there and ignores `~/.jfrog/security/certs/`.
|
|
112
124
|
|
|
113
125
|
**JSON output for CI pipelines:**
|
|
114
126
|
|
|
@@ -298,7 +310,7 @@ The session instruction template (injected by the control plane at session start
|
|
|
298
310
|
|
|
299
311
|
## Credentials
|
|
300
312
|
|
|
301
|
-
|
|
313
|
+
Skills resolve their own credentials through [`credbroker`](../credbroker/README.md), a standalone resolver that keeps cleartext out of the model's reach. AgentBundle uses `credbroker` only to read protected catalogues.
|
|
302
314
|
|
|
303
315
|
## Learn more
|
|
304
316
|
|
|
@@ -13,6 +13,11 @@ package, and publish an AgentBundle catalogue. It names the commands, outputs,
|
|
|
13
13
|
exit codes, publication ordering, and responsibility boundaries — without
|
|
14
14
|
prescribing a CI provider or a specific workflow shape.
|
|
15
15
|
|
|
16
|
+
Use it to implement the same release flow in GitHub Actions, GitLab CI, Jenkins,
|
|
17
|
+
or another runner: build without publication secrets, inject a restricted
|
|
18
|
+
publisher identity only into the upload job, serialize releases, verify with a
|
|
19
|
+
read identity, and retain a credential-free receipt.
|
|
20
|
+
|
|
16
21
|
## Responsibility boundary
|
|
17
22
|
|
|
18
23
|
Three parties share responsibility for a catalogue CI pipeline. No party may
|
|
@@ -21,7 +26,7 @@ silently assume another's obligations.
|
|
|
21
26
|
| Party | Owns | Never does |
|
|
22
27
|
|---|---|---|
|
|
23
28
|
| **AgentBundle CLI** | Correct catalogue validation; deterministic archive + SHA256 sidecar; stable JSON output shapes; stable exit-code contract | Read secrets; issue network calls; control upload order; manage retention |
|
|
24
|
-
| **Organization CI** |
|
|
29
|
+
| **Organization CI** | Protected secret storage; publisher and read identities; HTTPS upload; publication serialization (ensuring one release lands at a time); rollback policy; artifact retention | Implement validation logic; expose credentials to build jobs; bypass exit-code signals; skip the admission command |
|
|
25
30
|
| **Host Repository** | CI workflow files and trigger config; internal governance gates; tests proving the portable commands work in this repository | Alter the portable command signatures; branch AgentBundle's output format |
|
|
26
31
|
|
|
27
32
|
## CI lifecycle phases
|
|
@@ -43,6 +48,11 @@ Pin the version for reproducibility:
|
|
|
43
48
|
pip install 'agentbundle==<version>'
|
|
44
49
|
```
|
|
45
50
|
|
|
51
|
+
If the wheel is in an internal Artifactory PyPI repository, the selected Python
|
|
52
|
+
package client owns authentication. Its credentials are separate from the
|
|
53
|
+
identity that uploads a catalogue and from the identity that later reads a
|
|
54
|
+
protected Generic repository.
|
|
55
|
+
|
|
46
56
|
**Vendored.** The organization pre-installs agentbundle into a shared CI image or
|
|
47
57
|
tool layer. The CI step runs catalogue commands without an explicit install.
|
|
48
58
|
|
|
@@ -108,6 +118,22 @@ confirm the archive is valid before uploading it.
|
|
|
108
118
|
|
|
109
119
|
### Phase 4 — Publication
|
|
110
120
|
|
|
121
|
+
Run this phase in a protected upload job. Inject a restricted service identity
|
|
122
|
+
or an organization-configured CI OIDC exchange only after the source and
|
|
123
|
+
package checks pass. Use a username only when the selected upload client
|
|
124
|
+
requires one.
|
|
125
|
+
|
|
126
|
+
The portable controls map to common CI systems as follows:
|
|
127
|
+
|
|
128
|
+
| Control | GitHub Actions example | GitLab CI example | Jenkins or another runner |
|
|
129
|
+
| --- | --- | --- | --- |
|
|
130
|
+
| Publisher secret | Environment or organization Actions secret | Protected, masked, and hidden CI/CD variable | Credential binding or external secret store |
|
|
131
|
+
| Release gate | Protected environment and release tag | Protected release tag | Restricted release job |
|
|
132
|
+
| Serialization | `concurrency` group | `resource_group` | Deployment lock or equivalent |
|
|
133
|
+
|
|
134
|
+
These are mappings, not required products or variable names. The host
|
|
135
|
+
repository owns its workflow syntax.
|
|
136
|
+
|
|
111
137
|
Upload artifacts in this exact order:
|
|
112
138
|
|
|
113
139
|
1. The archive (`.tar.gz`)
|
|
@@ -121,12 +147,13 @@ channel pointer and fails cleanly; a consumer that resolves after step 3 finds t
|
|
|
121
147
|
archive already present.
|
|
122
148
|
|
|
123
149
|
Publication serialization — preventing two concurrent releases from interleaving
|
|
124
|
-
their uploads — is the CI system's responsibility.
|
|
150
|
+
their uploads — is the CI system's responsibility. Configure release objects as
|
|
151
|
+
immutable and allow controlled replacement only for channel descriptors.
|
|
125
152
|
|
|
126
153
|
### Phase 5 — Post-publication verification
|
|
127
154
|
|
|
128
|
-
After the channel descriptor is published,
|
|
129
|
-
the publication store and verify them locally:
|
|
155
|
+
After the channel descriptor is published, use a read-only identity to download
|
|
156
|
+
the archive and sidecar from the publication store and verify them locally:
|
|
130
157
|
|
|
131
158
|
```bash
|
|
132
159
|
# Download from the store first (provider-specific step)
|
|
@@ -141,7 +168,9 @@ archive. This confirms the archive round-trips through the publication store
|
|
|
141
168
|
without corruption.
|
|
142
169
|
|
|
143
170
|
Optionally, smoke-test pack installation from the published catalogue to confirm
|
|
144
|
-
consumer-side resolution.
|
|
171
|
+
consumer-side resolution. A smoke test against a protected catalogue needs the
|
|
172
|
+
same reader authentication that end users need; it must not silently reuse the
|
|
173
|
+
publisher identity.
|
|
145
174
|
|
|
146
175
|
### Phase 6 — Evidence retention
|
|
147
176
|
|
|
@@ -152,6 +181,11 @@ audit, and incident response. Minimum retention artifacts:
|
|
|
152
181
|
- The JSON output of `catalogue verify --format json` from Phase 2
|
|
153
182
|
- The JSON output of `catalogue verify --archive ...` from Phase 5
|
|
154
183
|
|
|
184
|
+
Also record a credential-free publication receipt: source revision, release and
|
|
185
|
+
channel names, artifact paths, archive digest, CI run reference, and remote
|
|
186
|
+
verification result. Never include a token, password, username, authenticated
|
|
187
|
+
URL, or secret-store location.
|
|
188
|
+
|
|
155
189
|
Retention period and storage location are Organization CI policy, not
|
|
156
190
|
AgentBundle's.
|
|
157
191
|
|
|
@@ -168,18 +202,29 @@ All `agentbundle catalogue` commands follow the same convention:
|
|
|
168
202
|
These codes are stable. A CI step that treats any non-zero exit as a failure
|
|
169
203
|
gets the correct behaviour.
|
|
170
204
|
|
|
171
|
-
##
|
|
205
|
+
## Credential and network boundaries
|
|
172
206
|
|
|
173
207
|
`agentbundle catalogue lint`, `agentbundle catalogue verify`, and
|
|
174
208
|
`agentbundle catalogue package` do not read secrets and do not issue network
|
|
175
209
|
calls. They operate entirely on the local filesystem.
|
|
176
210
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
211
|
+
The three credential paths are independent:
|
|
212
|
+
|
|
213
|
+
1. The Python package client authenticates to the repository that serves the
|
|
214
|
+
`agentbundle` wheel.
|
|
215
|
+
2. The protected upload job authenticates its upload client with a restricted
|
|
216
|
+
publisher identity.
|
|
217
|
+
3. AgentBundle's HTTPS client resolves a protected catalogue read through a
|
|
218
|
+
four-provider chain: bearer token (`AGENTBUNDLE_HTTP_BEARER_TOKEN`), JFrog
|
|
219
|
+
CLI 2.105.0+ profile, exact-machine `.netrc` record, then anonymous. The
|
|
220
|
+
chain stops at the first available provider; there is no fallback once a
|
|
221
|
+
provider is chosen. See the AgentBundle reference's Protected catalogue
|
|
222
|
+
authentication section for provider details and failure codes.
|
|
223
|
+
|
|
224
|
+
`AGENTBUNDLE_CA_BUNDLE`, `HTTPS_PROXY`, and `NO_PROXY` control TLS trust and
|
|
225
|
+
network routing when install or upgrade resolves a remote catalogue. They are
|
|
226
|
+
not publication credentials. Keep same-origin redirects, HTTPS-only access,
|
|
227
|
+
digest verification, and archive extraction confinement enabled.
|
|
183
228
|
|
|
184
229
|
## Command reference
|
|
185
230
|
|
{agentbundle-0.47.1 → agentbundle-0.51.0}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"guides/_shared/reference/catalogue-authoring-standards.md": "72771324354ff29a4bf9072f48236e537bc680421785d700d2a3308d562777cc",
|
|
4
|
-
"guides/_shared/reference/catalogue-ci-contract.md": "
|
|
4
|
+
"guides/_shared/reference/catalogue-ci-contract.md": "78994d30da2b0eb9ea9347f397791fafa99ebc92f80410f26b9af93788a6e188",
|
|
5
5
|
"packs/AGENTS.md": "c20af03f72b4c25c032ba5c15299eadaa0b41442c92d1cf621dde042cf9ff8db",
|
|
6
6
|
"packs/CLAUDE.md": "336cc4fbf19beaada7ccf9986414fa91851a8d7a07dfb3ccbe800a69eed0ab49",
|
|
7
7
|
"packs/README.md": "d2de5f9556f4c8e521103474bde74636e02cc805f9bf5312a3a61a1f3eb45d8f",
|
|
@@ -7,7 +7,7 @@ import stat
|
|
|
7
7
|
from contextlib import contextmanager
|
|
8
8
|
from hashlib import sha256
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import BinaryIO,
|
|
10
|
+
from typing import BinaryIO, Generator, Literal, NamedTuple, overload
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class UnsafeContentError(ValueError):
|
|
@@ -282,7 +282,7 @@ def _supports_descriptor_walk() -> bool:
|
|
|
282
282
|
@contextmanager
|
|
283
283
|
def _open_confined_parent(
|
|
284
284
|
root: Path, path: Path, *, relative: str
|
|
285
|
-
) ->
|
|
285
|
+
) -> Generator[tuple[int | None, str], None, None]:
|
|
286
286
|
"""Hold the target's parent open without following path components."""
|
|
287
287
|
try:
|
|
288
288
|
relative_path = path.relative_to(root)
|
|
@@ -352,7 +352,7 @@ def _open_confined_regular_file(
|
|
|
352
352
|
path: Path,
|
|
353
353
|
*,
|
|
354
354
|
max_bytes: int | None = None,
|
|
355
|
-
) ->
|
|
355
|
+
) -> Generator[BinaryIO, None, None]:
|
|
356
356
|
"""Open *path* only when it is a bounded, confined regular file.
|
|
357
357
|
|
|
358
358
|
The link count is checked both before and after opening so a hard-linked
|