agentbundle 0.52.1__tar.gz → 0.53.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.52.1/agentbundle.egg-info → agentbundle-0.53.0}/PKG-INFO +10 -1
- {agentbundle-0.52.1 → agentbundle-0.53.0}/README-pypi.md +9 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +8 -8
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +85 -7
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/manifest.json +2 -2
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/guide.schema.json +30 -5
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/archive.py +159 -2
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/package.py +239 -27
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/results.py +7 -1
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/cli.py +22 -1
- agentbundle-0.53.0/agentbundle/commands/catalogue_package.py +196 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/version.py +1 -1
- {agentbundle-0.52.1 → agentbundle-0.53.0/agentbundle.egg-info}/PKG-INFO +10 -1
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle.egg-info/SOURCES.txt +4 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/pyproject.toml +1 -1
- agentbundle-0.53.0/tests/unit/test_catalogue_archive_unit_digests.py +194 -0
- agentbundle-0.53.0/tests/unit/test_catalogue_package_compare.py +523 -0
- agentbundle-0.53.0/tests/unit/test_catalogue_package_refusal.py +331 -0
- agentbundle-0.53.0/tests/unit/test_catalogue_unit_digests.py +178 -0
- agentbundle-0.52.1/agentbundle/commands/catalogue_package.py +0 -98
- {agentbundle-0.52.1 → agentbundle-0.53.0}/MANIFEST.in +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/__main__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/agent-plugin-extension-namespaces.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/agent-plugin-extension-namespaces.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-index.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/CLAUDE.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/evals/eval_queries.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/profiles/CLAUDE.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_gemini_admissibility.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_layout_declared_section.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_shared_library_boundaries.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/close_work.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/cooling.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/distribution-routes.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/distribution-routes.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/file_safety.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/knowledge-captured-observation.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/marketplace-entry.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/public-contracts.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/LICENSE.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/PROVENANCE.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/mcp.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/vendor/agent-plugins/1.0.0/plugin.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/work_intake_refresh.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/workspace_status_engine.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/workspace_status_prune.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/bounded_metadata.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/_sweep_guard.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/hook_wiring_rules.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/main.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projection_io.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/plugin_hooks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/per-pack-agent-plugin.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/route_agent_plugin.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/route_apm.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/route_claude_plugins.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/route_lookup.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_fetch/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_fetch/direct_http.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_fetch/jfrog_cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_fetch/models.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/contracts_inspector.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/file_safety.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/index_generator.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/journey_validator.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/manifest.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/okf_discovery.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/catalogue_tooling/version_ranges.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/categories.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_contracts.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_index.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_sync.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/direct_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/direct_source.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/direct_source_acquisition.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/direct_source_state.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/direct_validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/oplog.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/render.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/safety.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/statelock.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/system_trust.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/user_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/workspace_mcp.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/conftest.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/setup.cfg +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/templates/install-marker.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/_direct_acquisition.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/_support.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/claude-code-2.1.226-hook-events.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/claude-code-2.1.228-hook-events.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/agents/bar.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/commands/qux.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/baz.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/qux.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/core/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/governance-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/governance-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/governance-extras/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/monorepo-extras/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/product-documentation/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/product-documentation/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/product-documentation/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/fixtures/recipes/bogus-target.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_claude_code.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_codex.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_copilot.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_cursor.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_gemini.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_kiro.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_agent_boundary_metadata_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_agent_plugin_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_build_ships_seeds.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_contract_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_contract_v07.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_contract_v08.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_distribution_route_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_distribution_route_golden.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_distribution_route_resolution.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_end_to_end_build.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_hook_wiring_rules.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_lint_packs.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_pack_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_pack_schema_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_pipeline.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_plugin_hooks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_plugin_publication_gates.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_policy_registry_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_projectable_subset.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_projection_io.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_projections_merge_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_route_lookup.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_scope_rails.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_security.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_self_host_check.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_self_host_metadata_policy.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_sequential_implementer_dispatch_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_shared_libs_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_user_libs_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/build_pipeline/test_writers_emit_lf.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/conftest.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/contracts/test_agentbundle_show_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/contracts/test_catalogue_fetch_credential_boundary.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/contracts/test_skill_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/adapt/.adapt-discovery.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/adapt/values.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/catalogue.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/.gitkeep +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/_example/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/_example/evals/eval_queries.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/packs/_example/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/profiles/.gitkeep +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/profiles/_example/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/blank_catalogue/profiles/_example/profile.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield/values.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/AGENTS.upstream.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/DESIGN.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/EXPECTED_TREE.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/docs/CHARTER.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/docs/guides/how-to/index.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt/docs/howto/getting-started.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt-expected/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt-expected/docs/CHARTER.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/.adapt-discovery.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/state.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_sync/adapter_contract_major_mismatch/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/catalogue.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/hook-wiring/example.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/scripts/run.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/JOURNEY.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/packs/pack-without-journey/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/catalogue_wave4/profiles/test-profile.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/cognitive-load-hosts.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag/scripts/cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag-derived/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag-derived/scripts/cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag-normalised/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/argv-flag-normalised/scripts/cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/conforming/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/conforming/scripts/cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/dotfile-grep/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/dotfile-grep/scripts/leak.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/dotfile-with-optout/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/dotfile-with-optout/scripts/legit.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/mcp-server-headers/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/mcp-server-headers/scripts/cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/creds/skills/missing-dont-block/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/direct/ac35_corpus_verdicts.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/direct/golden_state_0_5.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/distribution-routes/golden.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/distribution-routes/witness-packs/portable/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/distribution-routes/witness-packs/portable/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/LICENSE-APACHE +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/LICENSE-MIT +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/catalogue.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/alpha/seeds/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/beta/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/external_catalogue/profiles/example.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/agents/helper.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/commands/cmd.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/hook-wiring/run.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/hooks/run.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/install/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/kiro_ide_hook/ask_agent_basic.kiro.hook +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/kiro_ide_hook/run_command_with_placeholder.kiro.hook +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/lint_packs/clean/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/lint_packs/clean/seeds/README.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/list-installed/golden_120col.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/list-installed/golden_80col.txt +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/list_packs/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/list_packs/catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/.apm/skills/local-test/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/cc-user-hooks/.apm/hook-wiring/on-prompt.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/cc-user-hooks/.apm/hooks/on-prompt.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/cc-user-hooks/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-repo-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-repo-hooks/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-user-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-user-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-user-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/kiro-user-hooks/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-missing-attach/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-pascal-events/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/packs/malformed-kiro-unknown-agent/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/scaffold/test-pack/seeds/AGENTS.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/scaffold/test-pack/seeds/_agents-footer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/scaffold/test-pack/seeds/docs/CHARTER.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/show_contract/agentbundle-show.schema.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/show_contract/catalogue.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/show_contract/installed_state.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v1/packs/core/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v2/packs/core/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/upgrade/catalogue_v3/packs/core/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/validate/bad_recipe_pack/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/validate/malformed_pack/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/validate/valid_pack/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/fixtures/validate/version_mismatch_pack/pack.toml +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_adapt_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_adapt_dual_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_adapt_preflight_detection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_adapt_schema_migration.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_apm_install_route.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_blank_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_brownfield_adapt_end_to_end.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_brownfield_round_trip.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_brownfield_user_home_fixture.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_build_check_drift_gates.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_build_derivation_apm.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_build_derivation_claude_plugins.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_init.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_adapter_compat.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_dependencies.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_external_portability.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_fixture_checks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_marketplace.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_output_drift.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_package_preflight.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_plugin_path.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_profile_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_verify_step1.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_wave4_index_generator.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_wave4_integration.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_wave4_journey_validator.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_catalogue_wave4_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_cc_user_hooks_fixture.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_claude_plugins_install_route.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_config_cascade.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_credential_brokers_pack_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_credentials_wheel.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_direct_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_discovery_schema_cross_consumer.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_editable_source_detection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_fixtures_validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_hook_wiring_ingress.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_adapt_chain.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_converters_user_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_copilot_full_parity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_core_smoke.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_default_source.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_dependencies_gate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_dual_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_layout_is_best_effort.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_orphan_reshape.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_pack_metadata_shape.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_profile.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_profile_live.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_repo_scope_per_adapter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_research_user_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_seed_delivery.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_session_start_wiring.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_upgrade_offer.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_user_hooks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_install_user_scope_allowed_adapters.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_jfrog_cli_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_kiro_ide_hook_e2e.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_kiro_repo_hooks_fixture.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_kiro_user_hooks_fixture.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_list_packs_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_local_scope_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_marketplace_entry_validation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_marketplace_manifest_regression.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_multi_pack_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_orphan_cleanup_respects_foreign_state.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_plugin_route_membership.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_portable_catalogue_authentication.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_recommends_cross_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_reconcile.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_reserved_path_filter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_scaffold_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_self_host_schema_migration.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_self_host_sweep_respects_state.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_shared_prefix_coexistence.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_show_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_tier_invariants.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_trust_fallback_tls.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_uninstall_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_uninstall_user_hooks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_upgrade_attach_to_agent.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_upgrade_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_upgrade_user_hooks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_version_gate_matrix.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_workspace_mcp_git_fsm.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/integration/test_zipapp.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/performance/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/performance/test_direct_family2_budget_cost.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_git_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_layout_override.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/test_workspace_mcp_tools.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/__init__.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/conftest.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_adapt_discovery_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_adapter_symlink_policy.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_append_layout_section.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_architect_readme_install_command.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_ci_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_curation_deps.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_fetch.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_fetch_jfrog.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_init_cli_self_hosted.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_pack_defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_self_hosted_export_removal.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_skill_spec_lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_sync.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_sync_fixture_set.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_archive.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_build.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_file_safety.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_foundation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_identity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_init.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_lint.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_package.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_self_host.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_self_hosted_init.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_source_package.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_tooling_verify.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_trust_fallback.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave2_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave2_validation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave3_contracts_cli.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave3_contracts_inspector.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave3_init_nextsteps.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_catalogue_wave3_offline_navigation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_catalogue_optional.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_help_lists_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_list_targets_help.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_namespace_fixture.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_path_normalisation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_profile_surface.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cli_scope_flags.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_codex_agent_toml.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_codex_projection_modes.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_cognitive_load_seed_contract.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_collect_tree_symlinks.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_common_classify_seeds.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_config_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_configured_adapter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_confirm_helper.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_contract_parity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_contract_v0_3_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_copilot_agent_md.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_copilot_hooks_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_copilot_user_scope_wiring.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_credbroker_lint_hardening.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_dependencies_batch.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_diff_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_admission.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_architecture_controls.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_diagnostics.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_lifecycle_facts.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_source_acquisition.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_source_state.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_upgrade.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_direct_validate.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_footprint_ownership.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_https_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_init_state_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_argparse_adapter_flag.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_argparse_emit_install_routes.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_defaults_preferred_adapter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_event_dropped_wirings.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_first_value_handoff.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_force_help.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_inband_detection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_messages.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_messages_repo_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_refusal_ordering.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_install_state_provenance.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_kiro_ide_hook_projection.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_kiro_ide_hook_rail.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_kiro_ide_hook_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_layout_bases_anchoring.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_lint_agent_artifacts_metadata_auth.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_list_installed_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_list_installed_status.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_list_targets_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_exclude_git_cache.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t10_uninstall.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t12_show.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t2_resolve.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t3_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t4_state_path.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t5_list_installed.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t7_install_gates.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t8_install.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_local_scope_t9_exclude.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_marker_schema_version_parity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_merge_into_agent_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_multi_adapter_disambiguator.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_nested_symlink_hardening.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_offer_upgrade_namespace.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_okf_discovery.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_org_bootstrap.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_orphan_sweep_guards.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_pack_config_api.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_pack_inventory.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_pack_layout_section_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_package_catalogue.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_packstate_source_provenance.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_pipeline_phase_order.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_plugin_scope_filter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_profile_reader.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_render.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_render_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_render_table.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_resolve_state_path.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_resolve_target_adapter_user_config.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_resolve_user_scope_target_adapter.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_route_surface_parity.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_safety.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_safety_repo_scope_prefixes.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_safety_scan_per_pack_scoping.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_scaffold_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_scope.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_self_host_windows.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_shared_prefix_disclosure.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_source_conflict_guard.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_source_defaults.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_state_v01_refuse_write.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_state_v02.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_state_v0_4_schema.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_statelock.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_statelock_hardening.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_system_trust.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_target_resolver.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_toml_emitters.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_unresolved_markers.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_upgrade_bulk_all.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_upgrade_recap.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_upgrade_source_inference.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_user_config_io.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_user_config_isolation.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_user_config_path.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_user_config_source.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_user_merge_json.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_validate_attach_to_agent.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_validate_categories.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_validate_cmd.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_validate_hook_wiring_per_file_compatibility.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_values_from_shapes.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_version.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.0}/tests/unit/test_windows_direct_suite_registration.py +0 -0
- {agentbundle-0.52.1 → agentbundle-0.53.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.53.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
|
|
@@ -35,6 +35,15 @@ python -m pip install agentbundle
|
|
|
35
35
|
|
|
36
36
|
Requires Python 3.11+. Runs on macOS, Linux, and Windows.
|
|
37
37
|
|
|
38
|
+
## What's new in 0.53.0
|
|
39
|
+
|
|
40
|
+
`agentbundle catalogue package` now refuses to replace a release archive that
|
|
41
|
+
already exists and exits 2; `--force` replaces it on purpose. `--compare
|
|
42
|
+
<archive>` lists the packs and profiles added, removed or changed since a prior
|
|
43
|
+
release, and `--format json` writes that result on stdout. Shortened options
|
|
44
|
+
such as `--forc` are rejected, and each `profiles` entry in the manifest is now
|
|
45
|
+
an object with a `path` and a `digest`.
|
|
46
|
+
|
|
38
47
|
## What's new in 0.52.1
|
|
39
48
|
|
|
40
49
|
The workspace-status engine and MCP tool now route `shape` entries to
|
|
@@ -14,6 +14,15 @@ 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.53.0
|
|
18
|
+
|
|
19
|
+
`agentbundle catalogue package` now refuses to replace a release archive that
|
|
20
|
+
already exists and exits 2; `--force` replaces it on purpose. `--compare
|
|
21
|
+
<archive>` lists the packs and profiles added, removed or changed since a prior
|
|
22
|
+
release, and `--format json` writes that result on stdout. Shortened options
|
|
23
|
+
such as `--forc` are rejected, and each `profiles` entry in the manifest is now
|
|
24
|
+
an object with a `path` and a `digest`.
|
|
25
|
+
|
|
17
26
|
## What's new in 0.52.1
|
|
18
27
|
|
|
19
28
|
The workspace-status engine and MCP tool now route `shape` entries to
|
|
@@ -69,7 +69,7 @@ and `version`; `[pack.adapter-contract]` with `version`.
|
|
|
69
69
|
marketplace browser, a catalogue listing, or CLI output. It is not read by the model.
|
|
70
70
|
|
|
71
71
|
That makes it a different artifact from a skill's or agent's `description`, which the
|
|
72
|
-
model reads to decide whether to **activate** the primitive. Length
|
|
72
|
+
model reads to decide whether to **activate** the primitive. Length matters
|
|
73
73
|
there and shortening it degrades activation; per-target caps in
|
|
74
74
|
`contracts/target-vocab.toml` govern it. Do not carry habits from one to the other.
|
|
75
75
|
|
|
@@ -126,7 +126,7 @@ review against the shape and the table above.
|
|
|
126
126
|
A pack README serves adopters, not contributors. It states the pack's intent and the
|
|
127
127
|
user journey it serves — not a skill inventory. See the `_example` pack for a template.
|
|
128
128
|
|
|
129
|
-
- [packs/_example/README.md](../../../packs/_example/README.md) —
|
|
129
|
+
- [packs/_example/README.md](../../../packs/_example/README.md) — the model example.
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -224,7 +224,7 @@ archive supports downstream verification, auditing, security review, and
|
|
|
224
224
|
testing an extracted release.
|
|
225
225
|
|
|
226
226
|
Catalogue inclusion does not imply runtime installation. Installers and
|
|
227
|
-
projection adapters treat `.apm/` and `seeds/` as the projected
|
|
227
|
+
projection adapters treat `.apm/` and `seeds/` as the projected folders, so
|
|
228
228
|
nothing outside those two — `tests/` included — reaches an installed
|
|
229
229
|
environment.
|
|
230
230
|
|
|
@@ -441,18 +441,18 @@ environment, smoke-test it there, and confirm the projection contains no
|
|
|
441
441
|
Every skill is a Markdown file with YAML frontmatter. Required frontmatter keys:
|
|
442
442
|
`title`, `description` (≤ 1024 characters), `kind`.
|
|
443
443
|
|
|
444
|
-
- `guides/_shared/
|
|
445
|
-
naming rules, progressive-disclosure pattern, three-tier dependency policy,
|
|
446
|
-
coverage. (Available in the full guide library; not bundled in this scaffold.)
|
|
444
|
+
- `guides/_shared/reference/skill-authoring-standards.md` — frontmatter key list, body
|
|
445
|
+
structure, naming rules, progressive-disclosure pattern, three-tier dependency policy,
|
|
446
|
+
and eval coverage. (Available in the full guide library; not bundled in this scaffold.)
|
|
447
447
|
|
|
448
448
|
---
|
|
449
449
|
|
|
450
450
|
## 6. Skill body and progressive disclosure
|
|
451
451
|
|
|
452
452
|
Long skills use progressive disclosure: a brief required-reading summary at the top,
|
|
453
|
-
with detail sections the agent loads on demand. This keeps context usage
|
|
453
|
+
with detail sections the agent loads on demand. This keeps context usage small.
|
|
454
454
|
|
|
455
|
-
See `guides/_shared/
|
|
455
|
+
See `guides/_shared/reference/skill-authoring-standards.md` for the full pattern.
|
|
456
456
|
|
|
457
457
|
---
|
|
458
458
|
|
|
@@ -113,6 +113,18 @@ is computed over the archive and stored alongside it. The channel descriptor is
|
|
|
113
113
|
small JSON file that records which release the channel currently points to; it is
|
|
114
114
|
the live pointer consumers use to resolve the latest version.
|
|
115
115
|
|
|
116
|
+
Packaging refuses to replace a release that already exists. When
|
|
117
|
+
`catalogue-$RELEASE.tar.gz` is already under `$OUTPUT`, the command exits 2,
|
|
118
|
+
prints the existing archive path on stderr, and writes nothing. Publish each
|
|
119
|
+
release once, from a fresh output directory. A CI step never passes `--force`;
|
|
120
|
+
only a publisher replacing a release by hand does.
|
|
121
|
+
|
|
122
|
+
To see what changed since the last release, pass the prior archive:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
agentbundle catalogue package ... --compare "/path/to/catalogue-$PRIOR.tar.gz" --format json
|
|
126
|
+
```
|
|
127
|
+
|
|
116
128
|
Re-run `agentbundle catalogue verify --archive <path>.tar.gz` after packaging to
|
|
117
129
|
confirm the archive is valid before uploading it.
|
|
118
130
|
|
|
@@ -197,10 +209,11 @@ All `agentbundle catalogue` commands follow the same convention:
|
|
|
197
209
|
|------|---------|
|
|
198
210
|
| `0` | Success |
|
|
199
211
|
| `1` | Validation or operational failure (errors in the catalogue, archive mismatch, internal error) |
|
|
200
|
-
| `2` | CLI usage error (missing required flag, unknown option) |
|
|
212
|
+
| `2` | CLI usage error (missing required flag, unknown or abbreviated option); for `catalogue package`, also a refused replacement of an existing release archive |
|
|
201
213
|
|
|
202
214
|
These codes are stable. A CI step that treats any non-zero exit as a failure
|
|
203
|
-
gets the correct behaviour.
|
|
215
|
+
gets the correct behaviour. A step that must tell a refused replacement from a
|
|
216
|
+
usage error reads exit 2 together with the `CAT-PKG-002` line on stderr.
|
|
204
217
|
|
|
205
218
|
## Credential and network boundaries
|
|
206
219
|
|
|
@@ -277,15 +290,80 @@ agentbundle catalogue package --bundle BUNDLE --release RELEASE
|
|
|
277
290
|
[--source-revision SOURCE_REVISION]
|
|
278
291
|
[--minimum-agentbundle-version VERSION]
|
|
279
292
|
[--published-at DATETIME]
|
|
293
|
+
[--flavor {runtime,source}]
|
|
294
|
+
[--force] [--compare PATH]
|
|
295
|
+
[--format {table,json}]
|
|
280
296
|
```
|
|
281
297
|
|
|
282
298
|
Required flags: `--bundle`, `--release`, `--channel`, `--output`.
|
|
283
|
-
Optional:
|
|
284
|
-
|
|
299
|
+
Optional:
|
|
300
|
+
|
|
301
|
+
| Flag | Meaning |
|
|
302
|
+
|------|---------|
|
|
303
|
+
| `--root` | Catalogue root; defaults to `.` |
|
|
304
|
+
| `--source-revision` | VCS revision recorded as audit metadata |
|
|
305
|
+
| `--minimum-agentbundle-version` | Minimum consumer version required |
|
|
306
|
+
| `--published-at` | ISO-8601 timestamp override |
|
|
307
|
+
| `--flavor` | `runtime` (default) writes the runtime archive; `source` writes the self-hosted source archive |
|
|
308
|
+
| `--force` | Replace an existing release archive instead of refusing. First-party CI never passes it |
|
|
309
|
+
| `--compare PATH` | Prior release archive to compare against; runtime flavour only |
|
|
310
|
+
| `--format` | `table` (default) or `json`; `json` writes one envelope on stdout; runtime flavour only |
|
|
311
|
+
|
|
312
|
+
`--flavor source` with `--compare` or `--format json` exits 2 with a usage
|
|
313
|
+
message and writes nothing. The subcommand rejects abbreviated options, so
|
|
314
|
+
`--forc` exits 2 rather than selecting `--force`.
|
|
315
|
+
|
|
316
|
+
**Streams.** Human output and diagnostic lines go to stderr in both formats.
|
|
317
|
+
Each diagnostic is one line, `<code>: <message>`. Stdout carries the JSON
|
|
318
|
+
envelope alone, and nothing when `--format table` is used. Text taken from the
|
|
319
|
+
prior archive is printed with non-printable characters written as escapes.
|
|
320
|
+
|
|
321
|
+
**`--format json`.** On success and on a failure after argument parsing, stdout
|
|
322
|
+
is one JSON object:
|
|
323
|
+
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"schema_version": 1,
|
|
327
|
+
"command": "catalogue",
|
|
328
|
+
"operation": "package",
|
|
329
|
+
"agentbundle_version": "<version>",
|
|
330
|
+
"catalogue_schema_version": 1,
|
|
331
|
+
"ok": true,
|
|
332
|
+
"diagnostics": []
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
With `--compare`, a successful run adds a `comparison` object:
|
|
337
|
+
|
|
338
|
+
```json
|
|
339
|
+
{
|
|
340
|
+
"comparison": {
|
|
341
|
+
"prior": {"archive": "<--compare value>", "bundle": "<bundle>", "release": "<release>"},
|
|
342
|
+
"packs": {"added": [], "removed": [], "changed": [], "unchanged": 0},
|
|
343
|
+
"profiles": {"added": [], "removed": [], "changed": [], "unchanged": 0}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Added and removed pack items are `{name, version, digest}`; profile items are
|
|
349
|
+
`{name, digest}`. A changed pack is `{name, version: {from, to}, digest: {from, to}}`;
|
|
350
|
+
a changed profile is `{name, digest: {from, to}}`. Each list is sorted by name and
|
|
351
|
+
`unchanged` is a count. A failed run has `ok` false, the failing codes in
|
|
352
|
+
`diagnostics`, and no `comparison`. The human comparison on stderr marks a pack
|
|
353
|
+
whose content changed under an unchanged version with
|
|
354
|
+
`content changed, version unchanged`.
|
|
355
|
+
|
|
356
|
+
**Exit codes.**
|
|
357
|
+
|
|
358
|
+
| Code | Meaning |
|
|
359
|
+
|------|---------|
|
|
360
|
+
| `0` | Packaged; with `--force`, a replaced release also exits 0 |
|
|
361
|
+
| `1` | Failure: verification, an unreadable or invalid `--compare` archive, or an internal error |
|
|
362
|
+
| `2` | Usage error, or a refused replacement of an existing release archive (`CAT-PKG-002`) |
|
|
285
363
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
364
|
+
The refusal applies to both flavours and runs before any file is written. The
|
|
365
|
+
deprecated top-level `package-catalogue` command is unchanged and exits 1 on the
|
|
366
|
+
same refusal.
|
|
289
367
|
|
|
290
368
|
## See also
|
|
291
369
|
|
{agentbundle-0.52.1 → agentbundle-0.53.0}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"guides/_shared/reference/catalogue-authoring-standards.md": "
|
|
4
|
-
"guides/_shared/reference/catalogue-ci-contract.md": "
|
|
3
|
+
"guides/_shared/reference/catalogue-authoring-standards.md": "0b85918871438d7410f31d5e42eeebdf86892e8156428ed4eebdb7acc1e5f933",
|
|
4
|
+
"guides/_shared/reference/catalogue-ci-contract.md": "304c149ae6a3bd32b404b3c384b511266eec8e4e6dd58aa26ec4b9dd1d8f06cd",
|
|
5
5
|
"packs/AGENTS.md": "c20af03f72b4c25c032ba5c15299eadaa0b41442c92d1cf621dde042cf9ff8db",
|
|
6
6
|
"packs/CLAUDE.md": "336cc4fbf19beaada7ccf9986414fa91851a8d7a07dfb3ccbe800a69eed0ab49",
|
|
7
7
|
"packs/README.md": "d2de5f9556f4c8e521103474bde74636e02cc805f9bf5312a3a61a1f3eb45d8f",
|
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
"title": "Guide frontmatter",
|
|
4
4
|
"description": "YAML frontmatter schema for catalogue-facing guide files under guides/.",
|
|
5
5
|
"type": "object",
|
|
6
|
-
"required": [
|
|
6
|
+
"required": [
|
|
7
|
+
"title",
|
|
8
|
+
"summary",
|
|
9
|
+
"pack",
|
|
10
|
+
"kind"
|
|
11
|
+
],
|
|
7
12
|
"properties": {
|
|
8
13
|
"title": {
|
|
9
14
|
"type": "string",
|
|
10
15
|
"minLength": 1,
|
|
11
|
-
"description": "Page title
|
|
16
|
+
"description": "Page title \u2014 used by the docs-site renderer as the heading."
|
|
12
17
|
},
|
|
13
18
|
"summary": {
|
|
14
19
|
"type": "string",
|
|
@@ -22,8 +27,13 @@
|
|
|
22
27
|
},
|
|
23
28
|
"kind": {
|
|
24
29
|
"type": "string",
|
|
25
|
-
"enum": [
|
|
26
|
-
|
|
30
|
+
"enum": [
|
|
31
|
+
"tutorial",
|
|
32
|
+
"how-to",
|
|
33
|
+
"reference",
|
|
34
|
+
"explanation"
|
|
35
|
+
],
|
|
36
|
+
"description": "Di\u00e1taxis kind \u2014 a page contract, not a directory requirement."
|
|
27
37
|
},
|
|
28
38
|
"slug": {
|
|
29
39
|
"type": "string",
|
|
@@ -49,8 +59,23 @@
|
|
|
49
59
|
},
|
|
50
60
|
"status": {
|
|
51
61
|
"type": "string",
|
|
52
|
-
"enum": [
|
|
62
|
+
"enum": [
|
|
63
|
+
"draft",
|
|
64
|
+
"review",
|
|
65
|
+
"stable",
|
|
66
|
+
"deprecated"
|
|
67
|
+
],
|
|
53
68
|
"description": "Optional publication status. Defaults to 'stable' when absent."
|
|
69
|
+
},
|
|
70
|
+
"uses": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"minItems": 1,
|
|
73
|
+
"uniqueItems": true,
|
|
74
|
+
"items": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
77
|
+
},
|
|
78
|
+
"description": "Packs a reader needs for this page, shown as pills above the title. Defaults to `pack` when that is a real pack."
|
|
54
79
|
}
|
|
55
80
|
},
|
|
56
81
|
"additionalProperties": false
|
|
@@ -9,7 +9,9 @@ from __future__ import annotations
|
|
|
9
9
|
|
|
10
10
|
import hashlib
|
|
11
11
|
import json
|
|
12
|
+
import stat
|
|
12
13
|
import tarfile
|
|
14
|
+
from collections.abc import Mapping
|
|
13
15
|
from pathlib import Path
|
|
14
16
|
|
|
15
17
|
from agentbundle.catalogue import CatalogueError
|
|
@@ -36,6 +38,34 @@ def _get_agentbundle_version() -> str:
|
|
|
36
38
|
return _AGENTBUNDLE_VERSION
|
|
37
39
|
|
|
38
40
|
|
|
41
|
+
def unit_digest(file_digests: Mapping[str, str], unit_path: str) -> str | None:
|
|
42
|
+
"""Return the unit digest of ``unit_path`` over ``file_digests`` (AC-0001).
|
|
43
|
+
|
|
44
|
+
``file_digests`` maps archived relative paths to lowercase hex SHA-256.
|
|
45
|
+
If it holds ``unit_path`` exactly, the unit is that one file, named by its
|
|
46
|
+
basename; otherwise it is the directory of files under ``unit_path + "/"``.
|
|
47
|
+
Returns ``None`` when no member file exists.
|
|
48
|
+
"""
|
|
49
|
+
if unit_path in file_digests:
|
|
50
|
+
members = {unit_path.rsplit("/", 1)[-1]: file_digests[unit_path]}
|
|
51
|
+
else:
|
|
52
|
+
prefix = unit_path + "/"
|
|
53
|
+
members = {
|
|
54
|
+
path[len(prefix):]: digest
|
|
55
|
+
for path, digest in file_digests.items()
|
|
56
|
+
if path.startswith(prefix)
|
|
57
|
+
}
|
|
58
|
+
if not members:
|
|
59
|
+
return None
|
|
60
|
+
# Sort by UTF-8 bytes, not code points, to honour "byte order".
|
|
61
|
+
lines = sorted(
|
|
62
|
+
(rel.encode("utf-8"), f"{digest} {rel}\n")
|
|
63
|
+
for rel, digest in members.items()
|
|
64
|
+
)
|
|
65
|
+
preimage = "".join(line for _, line in lines)
|
|
66
|
+
return "sha256:" + hashlib.sha256(preimage.encode("utf-8")).hexdigest()
|
|
67
|
+
|
|
68
|
+
|
|
39
69
|
def _err(code: str, message: str, path: str | None = None) -> Diagnostic:
|
|
40
70
|
return Diagnostic(
|
|
41
71
|
code=code,
|
|
@@ -193,7 +223,83 @@ def _parse_manifest(
|
|
|
193
223
|
return None, [_err("CAT-V-ARC-010", f"{_MANIFEST_NAME} parse error: {exc}")]
|
|
194
224
|
|
|
195
225
|
|
|
196
|
-
def
|
|
226
|
+
def _entry_label(kind: str, index: int, item: object) -> str:
|
|
227
|
+
"""Name a manifest entry for a diagnostic: its ``name`` when a string, else its index."""
|
|
228
|
+
if isinstance(item, str):
|
|
229
|
+
return f"{kind}[{index}] {item!r}"
|
|
230
|
+
if isinstance(item, dict) and isinstance(item.get("name"), str):
|
|
231
|
+
return f"{kind}[{index}] {item['name']!r}"
|
|
232
|
+
return f"{kind}[{index}]"
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def _check_unit_entry_fields(label: str, item: dict) -> list[Diagnostic]:
|
|
236
|
+
"""AC-0018: ``path`` and ``digest`` must be strings, and ``digest`` needs ``path``."""
|
|
237
|
+
diags: list[Diagnostic] = []
|
|
238
|
+
for field in ("path", "digest"):
|
|
239
|
+
if field in item and not isinstance(item[field], str):
|
|
240
|
+
diags.append(_err("CAT-V-ARC-019", f"manifest {label} {field!r} must be a string"))
|
|
241
|
+
if "digest" in item and "path" not in item:
|
|
242
|
+
diags.append(_err("CAT-V-ARC-019", f"manifest {label} has a 'digest' but no 'path'"))
|
|
243
|
+
return diags
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _check_manifest_shape(manifest: dict) -> list[Diagnostic]:
|
|
247
|
+
"""AC-0018 shape checks over ``files``, ``packs`` and ``profiles``; one diagnostic per item."""
|
|
248
|
+
diags: list[Diagnostic] = []
|
|
249
|
+
files = manifest.get("files")
|
|
250
|
+
if isinstance(files, list):
|
|
251
|
+
for i, item in enumerate(files):
|
|
252
|
+
if not (
|
|
253
|
+
isinstance(item, dict)
|
|
254
|
+
and isinstance(item.get("path"), str)
|
|
255
|
+
and isinstance(item.get("sha256"), str)
|
|
256
|
+
):
|
|
257
|
+
diags.append(_err(
|
|
258
|
+
"CAT-V-ARC-019",
|
|
259
|
+
f"manifest {_entry_label('files', i, item)} must be an object "
|
|
260
|
+
"with string 'path' and 'sha256'",
|
|
261
|
+
))
|
|
262
|
+
packs = manifest.get("packs")
|
|
263
|
+
if isinstance(packs, list):
|
|
264
|
+
for i, item in enumerate(packs):
|
|
265
|
+
label = _entry_label("packs", i, item)
|
|
266
|
+
if not (
|
|
267
|
+
isinstance(item, dict)
|
|
268
|
+
and isinstance(item.get("name"), str)
|
|
269
|
+
and isinstance(item.get("version"), str)
|
|
270
|
+
):
|
|
271
|
+
diags.append(_err(
|
|
272
|
+
"CAT-V-ARC-019",
|
|
273
|
+
f"manifest {label} must be an object with string 'name' and 'version'",
|
|
274
|
+
))
|
|
275
|
+
if isinstance(item, dict):
|
|
276
|
+
diags.extend(_check_unit_entry_fields(label, item))
|
|
277
|
+
if "profiles" in manifest:
|
|
278
|
+
profiles = manifest["profiles"]
|
|
279
|
+
if not isinstance(profiles, list):
|
|
280
|
+
diags.append(_err("CAT-V-ARC-019", "manifest 'profiles' must be a list"))
|
|
281
|
+
else:
|
|
282
|
+
for i, item in enumerate(profiles):
|
|
283
|
+
label = _entry_label("profiles", i, item)
|
|
284
|
+
if isinstance(item, str):
|
|
285
|
+
continue
|
|
286
|
+
if not (isinstance(item, dict) and isinstance(item.get("name"), str)):
|
|
287
|
+
diags.append(_err(
|
|
288
|
+
"CAT-V-ARC-019",
|
|
289
|
+
f"manifest {label} must be a string or an object with a string 'name'",
|
|
290
|
+
))
|
|
291
|
+
if isinstance(item, dict):
|
|
292
|
+
diags.extend(_check_unit_entry_fields(label, item))
|
|
293
|
+
return diags
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
def _check_manifest_schema(manifest: object) -> list[Diagnostic]:
|
|
297
|
+
"""Check manifest schema and shape; accepts any parsed JSON value without raising."""
|
|
298
|
+
if not isinstance(manifest, dict):
|
|
299
|
+
return [_err(
|
|
300
|
+
"CAT-V-ARC-019",
|
|
301
|
+
f"manifest must be a JSON object, got {type(manifest).__name__}",
|
|
302
|
+
)]
|
|
197
303
|
diags: list[Diagnostic] = []
|
|
198
304
|
schema = manifest.get("schema")
|
|
199
305
|
if schema not in (1, 2):
|
|
@@ -208,6 +314,31 @@ def _check_manifest_schema(manifest: dict) -> list[Diagnostic]:
|
|
|
208
314
|
diags.append(_err("CAT-V-ARC-011", "manifest 'files' must be a list"))
|
|
209
315
|
if not isinstance(manifest.get("packs"), list):
|
|
210
316
|
diags.append(_err("CAT-V-ARC-011", "manifest 'packs' must be a list"))
|
|
317
|
+
diags.extend(_check_manifest_shape(manifest))
|
|
318
|
+
return diags
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def _check_unit_digests(manifest: dict) -> list[Diagnostic]:
|
|
322
|
+
"""AC-0005: each declared unit ``digest`` must equal the unit digest of its ``path``.
|
|
323
|
+
|
|
324
|
+
Entries without a ``digest`` (legacy manifests) are skipped (AC-0006). Runs only on
|
|
325
|
+
manifests that passed ``_check_manifest_schema``, so entries are well typed.
|
|
326
|
+
"""
|
|
327
|
+
file_digests = {e["path"]: e["sha256"] for e in manifest["files"]}
|
|
328
|
+
diags: list[Diagnostic] = []
|
|
329
|
+
for kind in ("packs", "profiles"):
|
|
330
|
+
for i, item in enumerate(manifest.get(kind, [])):
|
|
331
|
+
if not isinstance(item, dict) or "digest" not in item:
|
|
332
|
+
continue
|
|
333
|
+
expected = item["digest"]
|
|
334
|
+
actual = unit_digest(file_digests, item["path"])
|
|
335
|
+
if actual != expected:
|
|
336
|
+
diags.append(_err(
|
|
337
|
+
"CAT-V-ARC-018",
|
|
338
|
+
f"unit digest mismatch for {_entry_label(kind, i, item)} "
|
|
339
|
+
f"path {item['path']!r}: declared {expected!r}, computed {actual!r}",
|
|
340
|
+
path=item["path"],
|
|
341
|
+
))
|
|
211
342
|
return diags
|
|
212
343
|
|
|
213
344
|
|
|
@@ -411,17 +542,43 @@ def verify_archive(archive: Path, sha256_file: Path | None = None) -> VerifyResu
|
|
|
411
542
|
|
|
412
543
|
manifest, manifest_diags = _parse_manifest(tf, members)
|
|
413
544
|
diags.extend(manifest_diags)
|
|
414
|
-
if
|
|
545
|
+
if manifest_diags:
|
|
415
546
|
return _make_result(diags, "archive")
|
|
416
547
|
|
|
417
548
|
diags.extend(_check_manifest_schema(manifest))
|
|
418
549
|
if any(d.severity == Severity.ERROR for d in diags):
|
|
419
550
|
return _make_result(diags, "archive")
|
|
551
|
+
assert isinstance(manifest, dict) # a non-object manifest yields CAT-V-ARC-019 above
|
|
420
552
|
|
|
421
553
|
diags.extend(_check_all_manifest_digests(tf, members, manifest))
|
|
554
|
+
diags.extend(_check_unit_digests(manifest))
|
|
422
555
|
diags.extend(_check_no_undeclared_members(members, manifest))
|
|
423
556
|
diags.extend(_check_catalogue_markers(members))
|
|
424
557
|
diags.extend(_check_marketplace_entries(tf, members))
|
|
425
558
|
diags.extend(_check_min_agentbundle_compat(manifest))
|
|
426
559
|
|
|
427
560
|
return _make_result(diags, "archive")
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
def read_verified_manifest(archive: Path) -> tuple[dict | None, VerifyResult]:
|
|
564
|
+
"""Return the manifest of ``archive`` only when ``verify_archive`` passes on it.
|
|
565
|
+
|
|
566
|
+
A path that is not a regular file is refused before it is opened (AC-0023).
|
|
567
|
+
The archive is read in memory; nothing is extracted to disk. The manifest is
|
|
568
|
+
``None`` whenever the returned result is not ok.
|
|
569
|
+
"""
|
|
570
|
+
try:
|
|
571
|
+
is_regular = stat.S_ISREG(archive.stat().st_mode)
|
|
572
|
+
problem = None if is_regular else f"not a regular file: {archive}"
|
|
573
|
+
except OSError as exc:
|
|
574
|
+
problem = f"cannot read archive: {exc}"
|
|
575
|
+
if problem is not None:
|
|
576
|
+
return None, _make_result([_err("CAT-V-ARC-002", problem)], "archive")
|
|
577
|
+
result = verify_archive(archive)
|
|
578
|
+
if not result.ok:
|
|
579
|
+
return None, result
|
|
580
|
+
with tarfile.open(archive, "r:gz") as tf:
|
|
581
|
+
manifest, diags = _parse_manifest(tf, tf.getmembers())
|
|
582
|
+
if diags or not isinstance(manifest, dict):
|
|
583
|
+
return None, _make_result(diags, "archive")
|
|
584
|
+
return manifest, result
|