agentbundle 0.29.8__tar.gz → 0.31.1__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.31.1/MANIFEST.in +16 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/PKG-INFO +25 -7
- {agentbundle-0.29.8 → agentbundle-0.31.1}/README-pypi.md +23 -3
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +24 -5
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/manifest.json +7 -4
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/SKILL.md +27 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/evals/eval_queries.json +42 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json +14 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +20 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/tests/conformance/test_gemini_admissibility.py +67 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py +116 -0
- agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/tests/conformance/test_shared_library_boundaries.py +40 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/install-marker.py +7 -3
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/__init__.py +17 -15
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapter_root_bins.py +146 -30
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/__init__.py +12 -3
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/claude_code.py +5 -6
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/codex.py +8 -7
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/copilot.py +5 -3
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/kiro.py +18 -18
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/kiro_ide.py +5 -13
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/lint_packs.py +25 -16
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/main.py +281 -23
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/phase_order.py +0 -1
- agentbundle-0.31.1/agentbundle/build/projection_io.py +226 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/codex_agent_toml.py +1 -2
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/copilot_agent_md.py +0 -1
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/copilot_hooks_json.py +0 -1
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/kiro_ide_hook.py +2 -2
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/recipes/composite-marketplace.toml +1 -1
- agentbundle-0.31.1/agentbundle/build/recipes/marketplace.toml +9 -0
- agentbundle-0.31.1/agentbundle/build/recipes/per-pack-claude-plugin.toml +9 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/recipes/self-host.toml +1 -1
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/scope_rails.py +1 -2
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/self_host.py +283 -117
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/target_resolver.py +0 -1
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/user_libs.py +209 -26
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/validate.py +36 -29
- agentbundle-0.31.1/agentbundle/catalogue_tooling/file_safety.py +63 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/initialise_self_hosted.py +140 -12
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/package.py +51 -20
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/self_host.py +31 -2
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/self_host_windows.py +4 -4
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/skill_spec_lint.py +7 -4
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/cli.py +4 -3
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/install.py +11 -4
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/upgrade.py +9 -6
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/render.py +6 -2
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/version.py +1 -1
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle.egg-info/PKG-INFO +25 -7
- agentbundle-0.31.1/agentbundle.egg-info/SOURCES.txt +526 -0
- agentbundle-0.31.1/conftest.py +25 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/pyproject.toml +11 -7
- agentbundle-0.31.1/templates/install-marker.py +1166 -0
- agentbundle-0.31.1/tests/__init__.py +1 -0
- agentbundle-0.31.1/tests/_support.py +192 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/README.md +40 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/agents/bar.md +6 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/commands/qux.md +3 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/baz.toml +2 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.py +2 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.sh +3 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/core/pack.toml +13 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/governance-extras/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/governance-extras/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/governance-extras/pack.toml +16 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/monorepo-extras/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/monorepo-extras/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/monorepo-extras/pack.toml +11 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/product-documentation/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/product-documentation/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/product-documentation/pack.toml +11 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/packs/user-guide-diataxis/pack.toml +4 -0
- agentbundle-0.31.1/tests/build_pipeline/fixtures/recipes/bogus-target.toml +9 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_claude_code.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_codex.py +26 -50
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_copilot.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_cursor.py +13 -10
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_gemini.py +11 -87
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_kiro.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_kiro_alias.py +2 -3
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_kiro_cli.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_kiro_ide.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_adapter_root_bins_projection.py +247 -38
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_build_ships_seeds.py +4 -3
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_contract.py +11 -30
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_contract_scope.py +4 -4
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_contract_v07.py +5 -25
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_contract_v08.py +5 -22
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_end_to_end_build.py +23 -10
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_lint_packs.py +7 -9
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_load_pack_hook_wiring_safely.py +2 -3
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_pack_schema.py +6 -6
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_pack_schema_allowed_adapters.py +2 -5
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_pack_schema_install.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_pipeline.py +34 -11
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_plugin_manifest_schema.py +9 -75
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_projectable_subset.py +2 -2
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_scope_rails.py +6 -8
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_security.py +3 -4
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_self_host_check.py +352 -73
- agentbundle-0.31.1/tests/build_pipeline/test_self_host_fixture_guard.py +149 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_shared_libs_projection.py +8 -87
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_shared_prefix_contract.py +3 -20
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_user_libs_projection.py +242 -35
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_validate.py +6 -6
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_writers_emit_lf.py +3 -2
- agentbundle-0.31.1/tests/conftest.py +44 -0
- agentbundle-0.31.1/tests/fixtures/adapt/.adapt-discovery.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/adapt/values.toml +3 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/.claude-plugin/marketplace.json +8 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/packs/.gitkeep +0 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/packs/_example/.apm/skills/example-skill/SKILL.md +27 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/packs/_example/.claude-plugin/plugin.json +9 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/packs/_example/README.md +70 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/packs/_example/evals/eval_queries.json +42 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/profiles/.gitkeep +0 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/profiles/_example/README.md +24 -0
- agentbundle-0.31.1/tests/fixtures/blank_catalogue/profiles/_example/profile.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield/values.toml +3 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/AGENTS.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/AGENTS.upstream.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/DESIGN.md +6 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/EXPECTED_TREE.md +53 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/docs/CHARTER.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/docs/guides/how-to/index.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt/docs/howto/getting-started.md +8 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt-expected/AGENTS.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt-expected/docs/CHARTER.md +5 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt-user-home/.agentbundle/.adapt-discovery.toml +12 -0
- agentbundle-0.31.1/tests/fixtures/brownfield-adapt-user-home/.agentbundle/state.toml +1 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag/SKILL.md +23 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag/scripts/cli.py +15 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag-derived/SKILL.md +22 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag-derived/scripts/cli.py +28 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag-normalised/SKILL.md +22 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/argv-flag-normalised/scripts/cli.py +23 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/conforming/SKILL.md +23 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/conforming/scripts/cli.py +15 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/dotfile-grep/SKILL.md +22 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/dotfile-grep/scripts/leak.py +12 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/dotfile-with-optout/SKILL.md +25 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/dotfile-with-optout/scripts/legit.py +13 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/mcp-server-headers/SKILL.md +26 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/mcp-server-headers/scripts/cli.py +17 -0
- agentbundle-0.31.1/tests/fixtures/creds/skills/missing-dont-block/SKILL.md +10 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.apm/agents/helper.md +6 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.apm/commands/cmd.md +3 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.apm/hook-wiring/run.toml +2 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.apm/hooks/run.sh +3 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.apm/skills/example/SKILL.md +7 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/fixtures/install/catalogue/packs/alpha/pack.toml +13 -0
- agentbundle-0.31.1/tests/fixtures/kiro_ide_hook/ask_agent_basic.kiro.hook +13 -0
- agentbundle-0.31.1/tests/fixtures/kiro_ide_hook/run_command_with_placeholder.kiro.hook +13 -0
- agentbundle-0.31.1/tests/fixtures/lint_packs/clean/pack.toml +11 -0
- agentbundle-0.31.1/tests/fixtures/lint_packs/clean/seeds/README.md +3 -0
- agentbundle-0.31.1/tests/fixtures/list-installed/golden_120col.txt +5 -0
- agentbundle-0.31.1/tests/fixtures/list-installed/golden_80col.txt +5 -0
- agentbundle-0.31.1/tests/fixtures/list_packs/catalogue/packs/alpha/pack.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/list_packs/catalogue/packs/beta/pack.toml +10 -0
- agentbundle-0.31.1/tests/fixtures/local_scope/catalogue/packs/local-test-pack/.apm/skills/local-test/SKILL.md +3 -0
- agentbundle-0.31.1/tests/fixtures/local_scope/catalogue/packs/local-test-pack/pack.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/cc-user-hooks/.apm/hook-wiring/on-prompt.toml +8 -0
- agentbundle-0.31.1/tests/fixtures/packs/cc-user-hooks/.apm/hooks/on-prompt.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/cc-user-hooks/pack.toml +18 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-repo-hooks/.apm/agents/reviewer.md +8 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-repo-hooks/.apm/hook-wiring/on-spawn.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-repo-hooks/.apm/hooks/on-spawn.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-repo-hooks/pack.toml +20 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-user-hooks/.apm/agents/reviewer.md +8 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-user-hooks/.apm/hook-wiring/on-spawn.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-user-hooks/.apm/hooks/on-spawn.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/kiro-user-hooks/pack.toml +21 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/agents/reviewer.md +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hook-wiring/on-spawn.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hooks/on-spawn.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-missing-attach/pack.toml +14 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/agents/reviewer.md +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hook-wiring/on-spawn.toml +7 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hooks/on-spawn.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-pascal-events/pack.toml +16 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/agents/reviewer.md +5 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hook-wiring/on-spawn.toml +7 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hooks/on-spawn.sh +2 -0
- agentbundle-0.31.1/tests/fixtures/packs/malformed-kiro-unknown-agent/pack.toml +13 -0
- agentbundle-0.31.1/tests/fixtures/scaffold/test-pack/seeds/AGENTS.md +1 -0
- agentbundle-0.31.1/tests/fixtures/scaffold/test-pack/seeds/_agents-footer.md +1 -0
- agentbundle-0.31.1/tests/fixtures/scaffold/test-pack/seeds/docs/CHARTER.md +1 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/agents/reviewer.md +6 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/commands/deploy.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hook-wiring/pre-commit.toml +10 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/lint.py +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/pre-commit.sh +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/skills/work-loop/SKILL.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v1/packs/core/pack.toml +13 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/agents/reviewer.md +6 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/commands/deploy.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hook-wiring/pre-commit.toml +10 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/lint.py +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/pre-commit.sh +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/skills/work-loop/SKILL.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v2/packs/core/pack.toml +13 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/agents/reviewer.md +6 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/commands/deploy.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hook-wiring/pre-commit.toml +10 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/lint.py +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/pre-commit.sh +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/skills/work-loop/SKILL.md +3 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/.claude-plugin/plugin.json +5 -0
- agentbundle-0.31.1/tests/fixtures/upgrade/catalogue_v3/packs/core/pack.toml +13 -0
- agentbundle-0.31.1/tests/fixtures/validate/bad_recipe_pack/pack.toml +5 -0
- agentbundle-0.31.1/tests/fixtures/validate/malformed_pack/pack.toml +1 -0
- agentbundle-0.31.1/tests/fixtures/validate/valid_pack/pack.toml +4 -0
- agentbundle-0.31.1/tests/fixtures/validate/version_mismatch_pack/pack.toml +7 -0
- agentbundle-0.31.1/tests/integration/__init__.py +0 -0
- agentbundle-0.31.1/tests/integration/test_adapt_cmd.py +317 -0
- agentbundle-0.31.1/tests/integration/test_adapt_dual_scope.py +247 -0
- agentbundle-0.31.1/tests/integration/test_adapt_preflight_detection.py +217 -0
- agentbundle-0.31.1/tests/integration/test_adapt_schema_migration.py +125 -0
- agentbundle-0.31.1/tests/integration/test_apm_install_route.py +788 -0
- agentbundle-0.31.1/tests/integration/test_blank_catalogue.py +58 -0
- agentbundle-0.31.1/tests/integration/test_brownfield_adapt_end_to_end.py +205 -0
- agentbundle-0.31.1/tests/integration/test_brownfield_round_trip.py +133 -0
- agentbundle-0.31.1/tests/integration/test_brownfield_user_home_fixture.py +44 -0
- agentbundle-0.31.1/tests/integration/test_build_check_drift_gates.py +523 -0
- agentbundle-0.31.1/tests/integration/test_build_derivation_apm.py +181 -0
- agentbundle-0.31.1/tests/integration/test_build_derivation_claude_plugins.py +576 -0
- agentbundle-0.31.1/tests/integration/test_catalogue_init.py +465 -0
- agentbundle-0.31.1/tests/integration/test_cc_user_hooks_fixture.py +107 -0
- agentbundle-0.31.1/tests/integration/test_claude_plugins_install_route.py +1791 -0
- agentbundle-0.31.1/tests/integration/test_config_cascade.py +174 -0
- agentbundle-0.31.1/tests/integration/test_credential_brokers_pack_install.py +205 -0
- agentbundle-0.31.1/tests/integration/test_credentials_wheel.py +75 -0
- agentbundle-0.31.1/tests/integration/test_discovery_schema_cross_consumer.py +116 -0
- agentbundle-0.31.1/tests/integration/test_editable_source_detection.py +113 -0
- agentbundle-0.31.1/tests/integration/test_fixtures_validate.py +226 -0
- agentbundle-0.31.1/tests/integration/test_install_adapt_chain.py +442 -0
- agentbundle-0.31.1/tests/integration/test_install_cmd.py +691 -0
- agentbundle-0.31.1/tests/integration/test_install_converters_user_scope.py +190 -0
- agentbundle-0.31.1/tests/integration/test_install_copilot_full_parity.py +278 -0
- agentbundle-0.31.1/tests/integration/test_install_core_smoke.py +89 -0
- agentbundle-0.31.1/tests/integration/test_install_default_source.py +187 -0
- agentbundle-0.31.1/tests/integration/test_install_dependencies_gate.py +321 -0
- agentbundle-0.31.1/tests/integration/test_install_dropped_primitives_warning.py +550 -0
- agentbundle-0.31.1/tests/integration/test_install_dual_scope.py +440 -0
- agentbundle-0.31.1/tests/integration/test_install_orphan_reshape.py +135 -0
- agentbundle-0.31.1/tests/integration/test_install_pack_metadata_shape.py +278 -0
- agentbundle-0.31.1/tests/integration/test_install_profile.py +408 -0
- agentbundle-0.31.1/tests/integration/test_install_profile_live.py +103 -0
- agentbundle-0.31.1/tests/integration/test_install_repo_scope_per_adapter.py +730 -0
- agentbundle-0.31.1/tests/integration/test_install_research_user_scope.py +200 -0
- agentbundle-0.31.1/tests/integration/test_install_seed_delivery.py +222 -0
- agentbundle-0.31.1/tests/integration/test_install_session_start_wiring.py +139 -0
- agentbundle-0.31.1/tests/integration/test_install_upgrade_offer.py +243 -0
- agentbundle-0.31.1/tests/integration/test_install_user_hooks.py +411 -0
- agentbundle-0.31.1/tests/integration/test_install_user_scope_allowed_adapters.py +225 -0
- agentbundle-0.31.1/tests/integration/test_kiro_ide_hook_e2e.py +204 -0
- agentbundle-0.31.1/tests/integration/test_kiro_repo_hooks_fixture.py +93 -0
- agentbundle-0.31.1/tests/integration/test_kiro_user_hooks_fixture.py +155 -0
- agentbundle-0.31.1/tests/integration/test_list_packs_cmd.py +148 -0
- agentbundle-0.31.1/tests/integration/test_local_scope_install.py +377 -0
- agentbundle-0.31.1/tests/integration/test_marketplace_entry_validation.py +390 -0
- agentbundle-0.31.1/tests/integration/test_marketplace_manifest_regression.py +303 -0
- agentbundle-0.31.1/tests/integration/test_multi_pack_install.py +805 -0
- agentbundle-0.31.1/tests/integration/test_orphan_cleanup_respects_foreign_state.py +273 -0
- agentbundle-0.31.1/tests/integration/test_plugin_route_membership.py +613 -0
- agentbundle-0.31.1/tests/integration/test_recommends_cross_scope.py +228 -0
- agentbundle-0.31.1/tests/integration/test_reconcile.py +230 -0
- agentbundle-0.31.1/tests/integration/test_reserved_path_filter.py +236 -0
- agentbundle-0.31.1/tests/integration/test_scaffold_projection.py +147 -0
- agentbundle-0.31.1/tests/integration/test_self_host_schema_migration.py +138 -0
- agentbundle-0.31.1/tests/integration/test_self_host_sweep_respects_state.py +312 -0
- agentbundle-0.31.1/tests/integration/test_shared_prefix_coexistence.py +235 -0
- agentbundle-0.31.1/tests/integration/test_show_cmd.py +515 -0
- agentbundle-0.31.1/tests/integration/test_tier_invariants.py +335 -0
- agentbundle-0.31.1/tests/integration/test_uninstall_cmd.py +381 -0
- agentbundle-0.31.1/tests/integration/test_uninstall_user_hooks.py +327 -0
- agentbundle-0.31.1/tests/integration/test_upgrade_attach_to_agent.py +140 -0
- agentbundle-0.31.1/tests/integration/test_upgrade_cmd.py +1087 -0
- agentbundle-0.31.1/tests/integration/test_upgrade_user_hooks.py +307 -0
- agentbundle-0.31.1/tests/integration/test_version_gate_matrix.py +163 -0
- agentbundle-0.31.1/tests/integration/test_workspace_mcp_git_fsm.py +156 -0
- agentbundle-0.31.1/tests/integration/test_zipapp.py +92 -0
- agentbundle-0.31.1/tests/unit/__init__.py +0 -0
- agentbundle-0.31.1/tests/unit/test_adapt_discovery_schema.py +292 -0
- agentbundle-0.31.1/tests/unit/test_append_layout_section.py +238 -0
- agentbundle-0.31.1/tests/unit/test_architect_readme_install_command.py +26 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_ci_contract.py +244 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_curation_deps.py +62 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_init_cli_self_hosted.py +206 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_pack_defaults.py +596 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_self_hosted_export_removal.py +27 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_skill_spec_lint.py +913 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_archive.py +296 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_build.py +98 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_defaults.py +267 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_foundation.py +584 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_identity.py +151 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_init.py +783 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_lint.py +1146 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_package.py +958 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_self_host.py +314 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_self_hosted_init.py +1069 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_source_package.py +386 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_tooling_verify.py +461 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_wave2_schema.py +171 -0
- agentbundle-0.31.1/tests/unit/test_catalogue_wave2_validation.py +272 -0
- agentbundle-0.31.1/tests/unit/test_cli_catalogue_optional.py +38 -0
- agentbundle-0.31.1/tests/unit/test_cli_help_lists_config.py +45 -0
- agentbundle-0.31.1/tests/unit/test_cli_path_normalisation.py +161 -0
- agentbundle-0.31.1/tests/unit/test_cli_profile_surface.py +87 -0
- agentbundle-0.31.1/tests/unit/test_cli_scope_flags.py +193 -0
- agentbundle-0.31.1/tests/unit/test_codex_agent_toml.py +350 -0
- agentbundle-0.31.1/tests/unit/test_codex_projection_modes.py +193 -0
- agentbundle-0.31.1/tests/unit/test_common_classify_seeds.py +164 -0
- agentbundle-0.31.1/tests/unit/test_config.py +187 -0
- agentbundle-0.31.1/tests/unit/test_config_cmd.py +136 -0
- agentbundle-0.31.1/tests/unit/test_configured_adapter.py +35 -0
- agentbundle-0.31.1/tests/unit/test_confirm_helper.py +67 -0
- agentbundle-0.31.1/tests/unit/test_contract_parity.py +30 -0
- agentbundle-0.31.1/tests/unit/test_contract_v0_3_schema.py +598 -0
- agentbundle-0.31.1/tests/unit/test_copilot_agent_md.py +182 -0
- agentbundle-0.31.1/tests/unit/test_copilot_hooks_json.py +147 -0
- agentbundle-0.31.1/tests/unit/test_copilot_user_scope_wiring.py +151 -0
- agentbundle-0.31.1/tests/unit/test_credbroker_lint_hardening.py +167 -0
- agentbundle-0.31.1/tests/unit/test_dependencies_batch.py +117 -0
- agentbundle-0.31.1/tests/unit/test_diff_cmd.py +115 -0
- agentbundle-0.31.1/tests/unit/test_footprint_ownership.py +114 -0
- agentbundle-0.31.1/tests/unit/test_https_catalogue.py +1080 -0
- agentbundle-0.31.1/tests/unit/test_init_state_cmd.py +176 -0
- agentbundle-0.31.1/tests/unit/test_install_argparse_adapter_flag.py +82 -0
- agentbundle-0.31.1/tests/unit/test_install_argparse_emit_install_routes.py +263 -0
- agentbundle-0.31.1/tests/unit/test_install_defaults_preferred_adapter.py +343 -0
- agentbundle-0.31.1/tests/unit/test_install_dropped_primitives_warning.py +782 -0
- agentbundle-0.31.1/tests/unit/test_install_event_dropped_wirings.py +467 -0
- agentbundle-0.31.1/tests/unit/test_install_first_value_handoff.py +387 -0
- agentbundle-0.31.1/tests/unit/test_install_force_help.py +33 -0
- agentbundle-0.31.1/tests/unit/test_install_inband_detection.py +580 -0
- agentbundle-0.31.1/tests/unit/test_install_messages.py +136 -0
- agentbundle-0.31.1/tests/unit/test_install_messages_repo_scope.py +289 -0
- agentbundle-0.31.1/tests/unit/test_install_refusal_ordering.py +211 -0
- agentbundle-0.31.1/tests/unit/test_install_state_provenance.py +215 -0
- agentbundle-0.31.1/tests/unit/test_kiro_ide_hook_projection.py +389 -0
- agentbundle-0.31.1/tests/unit/test_kiro_ide_hook_rail.py +335 -0
- agentbundle-0.31.1/tests/unit/test_kiro_ide_hook_schema.py +125 -0
- agentbundle-0.31.1/tests/unit/test_lint_agent_artifacts_metadata_auth.py +166 -0
- agentbundle-0.31.1/tests/unit/test_list_installed_cmd.py +349 -0
- agentbundle-0.31.1/tests/unit/test_list_installed_status.py +1197 -0
- agentbundle-0.31.1/tests/unit/test_list_targets_cmd.py +120 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_schema.py +83 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t10_uninstall.py +353 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t12_show.py +71 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t2_resolve.py +64 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t3_config.py +37 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t4_state_path.py +28 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t5_list_installed.py +131 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t7_install_gates.py +229 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t8_install.py +401 -0
- agentbundle-0.31.1/tests/unit/test_local_scope_t9_exclude.py +253 -0
- agentbundle-0.31.1/tests/unit/test_marker_schema_version_parity.py +51 -0
- agentbundle-0.31.1/tests/unit/test_merge_into_agent_json.py +347 -0
- agentbundle-0.31.1/tests/unit/test_multi_adapter_disambiguator.py +83 -0
- agentbundle-0.31.1/tests/unit/test_nested_symlink_hardening.py +154 -0
- agentbundle-0.31.1/tests/unit/test_org_bootstrap.py +746 -0
- agentbundle-0.31.1/tests/unit/test_pack_config_api.py +469 -0
- agentbundle-0.31.1/tests/unit/test_pack_inventory.py +122 -0
- agentbundle-0.31.1/tests/unit/test_package_catalogue.py +1190 -0
- agentbundle-0.31.1/tests/unit/test_packstate_source_provenance.py +245 -0
- agentbundle-0.31.1/tests/unit/test_pipeline_phase_order.py +264 -0
- agentbundle-0.31.1/tests/unit/test_plugin_scope_filter.py +179 -0
- agentbundle-0.31.1/tests/unit/test_profile_reader.py +172 -0
- agentbundle-0.31.1/tests/unit/test_render.py +49 -0
- agentbundle-0.31.1/tests/unit/test_render_cmd.py +238 -0
- agentbundle-0.31.1/tests/unit/test_render_table.py +162 -0
- agentbundle-0.31.1/tests/unit/test_resolve_state_path.py +19 -0
- agentbundle-0.31.1/tests/unit/test_resolve_target_adapter_user_config.py +279 -0
- agentbundle-0.31.1/tests/unit/test_resolve_user_scope_target_adapter.py +690 -0
- agentbundle-0.31.1/tests/unit/test_safety.py +287 -0
- agentbundle-0.31.1/tests/unit/test_safety_repo_scope_prefixes.py +211 -0
- agentbundle-0.31.1/tests/unit/test_safety_scan_per_pack_scoping.py +473 -0
- agentbundle-0.31.1/tests/unit/test_scaffold_cmd.py +300 -0
- agentbundle-0.31.1/tests/unit/test_scope.py +186 -0
- agentbundle-0.31.1/tests/unit/test_self_host_windows.py +189 -0
- agentbundle-0.31.1/tests/unit/test_shared_prefix_disclosure.py +62 -0
- agentbundle-0.31.1/tests/unit/test_source_conflict_guard.py +585 -0
- agentbundle-0.31.1/tests/unit/test_source_defaults.py +572 -0
- agentbundle-0.31.1/tests/unit/test_state_v01_refuse_write.py +177 -0
- agentbundle-0.31.1/tests/unit/test_state_v02.py +158 -0
- agentbundle-0.31.1/tests/unit/test_state_v0_4_schema.py +227 -0
- agentbundle-0.31.1/tests/unit/test_statelock.py +111 -0
- agentbundle-0.31.1/tests/unit/test_target_resolver.py +181 -0
- agentbundle-0.31.1/tests/unit/test_toml_emitters.py +417 -0
- agentbundle-0.31.1/tests/unit/test_unresolved_markers.py +40 -0
- agentbundle-0.31.1/tests/unit/test_upgrade_bulk_all.py +1137 -0
- agentbundle-0.31.1/tests/unit/test_upgrade_recap.py +52 -0
- agentbundle-0.31.1/tests/unit/test_upgrade_source_inference.py +165 -0
- agentbundle-0.31.1/tests/unit/test_user_config_io.py +202 -0
- agentbundle-0.31.1/tests/unit/test_user_config_isolation.py +29 -0
- agentbundle-0.31.1/tests/unit/test_user_config_path.py +47 -0
- agentbundle-0.31.1/tests/unit/test_user_config_source.py +84 -0
- agentbundle-0.31.1/tests/unit/test_user_merge_json.py +420 -0
- agentbundle-0.31.1/tests/unit/test_validate_attach_to_agent.py +302 -0
- agentbundle-0.31.1/tests/unit/test_validate_categories.py +92 -0
- agentbundle-0.31.1/tests/unit/test_validate_cmd.py +329 -0
- agentbundle-0.31.1/tests/unit/test_validate_hook_wiring_per_file_compatibility.py +422 -0
- agentbundle-0.31.1/tests/unit/test_values_from_shapes.py +68 -0
- agentbundle-0.31.1/tests/unit/test_version.py +129 -0
- agentbundle-0.29.8/agentbundle/build/recipes/marketplace.toml +0 -8
- agentbundle-0.29.8/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -7
- agentbundle-0.29.8/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -88
- agentbundle-0.29.8/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -74
- agentbundle-0.29.8/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -95
- agentbundle-0.29.8/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -136
- agentbundle-0.29.8/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -119
- agentbundle-0.29.8/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -88
- agentbundle-0.29.8/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -109
- agentbundle-0.29.8/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -92
- agentbundle-0.29.8/agentbundle/build/tests/test_workspace_status_projection.py +0 -273
- agentbundle-0.29.8/agentbundle.egg-info/SOURCES.txt +0 -196
- agentbundle-0.29.8/tests/test_linear_primitive.py +0 -133
- {agentbundle-0.29.8 → agentbundle-0.31.1}/README.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/__init__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/__main__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/marketplace-entry.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/categories.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/config.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/oplog.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/safety.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/scope.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/statelock.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/user_config.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/workspace_mcp.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/setup.cfg +0 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/__init__.py +0 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_projections_merge_json.py +0 -0
- {agentbundle-0.29.8/agentbundle/build/tests → agentbundle-0.31.1/tests/build_pipeline}/test_self_host_recipe_config.py +2 -2
- {agentbundle-0.29.8/agentbundle/_data/catalogue-scaffold → agentbundle-0.31.1/tests/fixtures/blank_catalogue}/packs/_example/pack.toml +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.29.8 → agentbundle-0.31.1}/tests/test_workspace_mcp_tools.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
graft tests
|
|
2
|
+
include conftest.py
|
|
3
|
+
graft templates
|
|
4
|
+
recursive-include agentbundle/_data/catalogue-scaffold/packs/_example/.apm *
|
|
5
|
+
recursive-include agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin *
|
|
6
|
+
prune tests/live-catalogue
|
|
7
|
+
prune tests/.pytest_cache
|
|
8
|
+
prune tests/.mypy_cache
|
|
9
|
+
prune tests/.ruff_cache
|
|
10
|
+
prune tests/.hypothesis
|
|
11
|
+
prune tests/htmlcov
|
|
12
|
+
global-exclude *.py[cod]
|
|
13
|
+
global-exclude .DS_Store
|
|
14
|
+
global-exclude .coverage
|
|
15
|
+
global-exclude .coverage.*
|
|
16
|
+
global-exclude coverage.xml
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.31.1
|
|
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
|
-
License: Apache-2.0 OR MIT
|
|
6
|
+
License-Expression: Apache-2.0 OR MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/eugenelim/agent-ready-repo
|
|
8
8
|
Project-URL: Source, https://github.com/eugenelim/agent-ready-repo
|
|
9
9
|
Project-URL: Documentation, https://eugenelim.github.io/agent-ready-repo/docs/
|
|
10
10
|
Project-URL: Catalogue Format, https://eugenelim.github.io/agent-ready-repo/docs/reference/catalogue-format
|
|
11
11
|
Project-URL: Changelog, https://eugenelim.github.io/agent-ready-repo/docs/changelog
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
13
|
Classifier: Operating System :: OS Independent
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -269,7 +267,10 @@ ignore them there; the separation is structural, not incidental.
|
|
|
269
267
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
270
268
|
pack's `README.md` — into each distribution route's manifest (the `plugin.json`
|
|
271
269
|
/ `marketplace.json` entry), so the catalogue describes each pack richly rather
|
|
272
|
-
than with a single sentence.
|
|
270
|
+
than with a single sentence. The Claude-plugin route carries only packs whose
|
|
271
|
+
`[pack.install] allowed-scopes` admits `user`: a plugin's code lands in the
|
|
272
|
+
adopter's global cache, so a repo-only pack gets no `marketplace.json` entry
|
|
273
|
+
and is reached with `agentbundle install` instead. A marketplace entry's `source` is a `git-subdir`
|
|
273
274
|
object (`url`, `path`, and one of `ref`/`sha`) pointing at the pack's directory
|
|
274
275
|
on the published distribution branch, and every entry is schema-validated at
|
|
275
276
|
build time against `marketplace-entry.schema.json`. Extra fields stay in `pack.toml`; the projection
|
|
@@ -305,13 +306,30 @@ pip install 'agentbundle[lint]'
|
|
|
305
306
|
agentbundle catalogue lint --root . --deep
|
|
306
307
|
```
|
|
307
308
|
|
|
308
|
-
**
|
|
309
|
+
**Verify a catalogue before you ship it** — runs the full read-only contract and
|
|
310
|
+
self-host checks in one command:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
agentbundle catalogue verify --root .
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
For a self-host-enabled catalogue with `.adapt-discovery.toml`, that includes the
|
|
317
|
+
self-host classifier. It treats generated targets as projected and known
|
|
318
|
+
repository-owned paths as excluded from projection. A genuinely unknown Git-visible
|
|
319
|
+
path remains an informational `unclassified` notice; it does not fail an otherwise
|
|
320
|
+
clean catalogue. Missing, modified, or orphaned projections do fail verification,
|
|
321
|
+
including generated executables under `.agentbundle/bin/` and vendored user libraries
|
|
322
|
+
under `.agentbundle/lib/`. Git filenames are read losslessly, and a failed Git listing
|
|
323
|
+
is reported as a warning rather than mistaken for a fully classified inventory.
|
|
324
|
+
|
|
325
|
+
To check only self-host projection drift, or to regenerate projected files locally:
|
|
309
326
|
|
|
310
327
|
```bash
|
|
311
328
|
agentbundle catalogue self-host --check --root .
|
|
329
|
+
agentbundle catalogue self-host --write --root .
|
|
312
330
|
```
|
|
313
331
|
|
|
314
|
-
|
|
332
|
+
Both check commands are safe to run in CI. The write command changes projected files.
|
|
315
333
|
|
|
316
334
|
By default projects for `claude-code` and `codex`. Downstream repos that use a single adapter (e.g. `kiro-ide`) can declare it in `catalogue.toml` — only that adapter is then projected, and its output files participate in the drift check:
|
|
317
335
|
|
|
@@ -247,7 +247,10 @@ ignore them there; the separation is structural, not incidental.
|
|
|
247
247
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
248
248
|
pack's `README.md` — into each distribution route's manifest (the `plugin.json`
|
|
249
249
|
/ `marketplace.json` entry), so the catalogue describes each pack richly rather
|
|
250
|
-
than with a single sentence.
|
|
250
|
+
than with a single sentence. The Claude-plugin route carries only packs whose
|
|
251
|
+
`[pack.install] allowed-scopes` admits `user`: a plugin's code lands in the
|
|
252
|
+
adopter's global cache, so a repo-only pack gets no `marketplace.json` entry
|
|
253
|
+
and is reached with `agentbundle install` instead. A marketplace entry's `source` is a `git-subdir`
|
|
251
254
|
object (`url`, `path`, and one of `ref`/`sha`) pointing at the pack's directory
|
|
252
255
|
on the published distribution branch, and every entry is schema-validated at
|
|
253
256
|
build time against `marketplace-entry.schema.json`. Extra fields stay in `pack.toml`; the projection
|
|
@@ -283,13 +286,30 @@ pip install 'agentbundle[lint]'
|
|
|
283
286
|
agentbundle catalogue lint --root . --deep
|
|
284
287
|
```
|
|
285
288
|
|
|
286
|
-
**
|
|
289
|
+
**Verify a catalogue before you ship it** — runs the full read-only contract and
|
|
290
|
+
self-host checks in one command:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
agentbundle catalogue verify --root .
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
For a self-host-enabled catalogue with `.adapt-discovery.toml`, that includes the
|
|
297
|
+
self-host classifier. It treats generated targets as projected and known
|
|
298
|
+
repository-owned paths as excluded from projection. A genuinely unknown Git-visible
|
|
299
|
+
path remains an informational `unclassified` notice; it does not fail an otherwise
|
|
300
|
+
clean catalogue. Missing, modified, or orphaned projections do fail verification,
|
|
301
|
+
including generated executables under `.agentbundle/bin/` and vendored user libraries
|
|
302
|
+
under `.agentbundle/lib/`. Git filenames are read losslessly, and a failed Git listing
|
|
303
|
+
is reported as a warning rather than mistaken for a fully classified inventory.
|
|
304
|
+
|
|
305
|
+
To check only self-host projection drift, or to regenerate projected files locally:
|
|
287
306
|
|
|
288
307
|
```bash
|
|
289
308
|
agentbundle catalogue self-host --check --root .
|
|
309
|
+
agentbundle catalogue self-host --write --root .
|
|
290
310
|
```
|
|
291
311
|
|
|
292
|
-
|
|
312
|
+
Both check commands are safe to run in CI. The write command changes projected files.
|
|
293
313
|
|
|
294
314
|
By default projects for `claude-code` and `codex`. Downstream repos that use a single adapter (e.g. `kiro-ide`) can declare it in `catalogue.toml` — only that adapter is then projected, and its output files participate in the drift check:
|
|
295
315
|
|
|
@@ -46,12 +46,31 @@ model reads to decide whether to **activate** the primitive. Length is load-bear
|
|
|
46
46
|
there and shortening it degrades activation; per-target caps in
|
|
47
47
|
`contracts/target-vocab.toml` govern it. Do not carry habits from one to the other.
|
|
48
48
|
|
|
49
|
-
**Shape.**
|
|
50
|
-
|
|
51
|
-
or the one thing that distinguishes this pack. Then stop.
|
|
49
|
+
**Shape.** Open on the job the adopter accomplishes, in their words. Say what they
|
|
50
|
+
get. Then stop.
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
Beyond that, let the pack decide the shape. Some need one sentence:
|
|
53
|
+
|
|
54
|
+
> Write the OpenAPI or AsyncAPI contract before anyone writes a handler.
|
|
55
|
+
|
|
56
|
+
Others earn three:
|
|
57
|
+
|
|
58
|
+
> Ship it the way production will see it. Deploy to a throwaway environment, run
|
|
59
|
+
> the tests, read the telemetry, and go round again until it holds. Then it stops
|
|
60
|
+
> and asks, because the next step is the one you cannot undo.
|
|
61
|
+
|
|
62
|
+
**Do not run every description through one mould.** An earlier pass here applied a
|
|
63
|
+
single shape — verb-first sentence, then a comma-list of capabilities — to all
|
|
64
|
+
22 packs. The result measured as 20 of 22 at exactly two sentences, 14 with a
|
|
65
|
+
comma-list second sentence, four opening on the identical "Turn X into Y" frame.
|
|
66
|
+
Every fact was right and the set still read as machine-written, because uniform
|
|
67
|
+
rhythm and symmetrical construction are themselves the tell. Vary sentence count
|
|
68
|
+
and length to match what each pack actually is.
|
|
69
|
+
|
|
70
|
+
Reach for the concrete. A real thing the user says (`"convert this PDF to
|
|
71
|
+
Markdown"`), a real artifact (`a Google-style design doc`), or a real check
|
|
72
|
+
(`the empty state and the focus ring you forgot`) all beat an abstract capability
|
|
73
|
+
noun.
|
|
55
74
|
|
|
56
75
|
**Anti-patterns**, each of which has shipped here before:
|
|
57
76
|
|
{agentbundle-0.29.8 → agentbundle-0.31.1}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"guides/_shared/reference/catalogue-authoring-standards.md": "
|
|
3
|
+
"guides/_shared/reference/catalogue-authoring-standards.md": "ff4bdc203affda0a2f41641c1155b3f4e90aade022e122999a82e7093e94d2ee",
|
|
4
4
|
"guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
|
|
5
5
|
"packs/AGENTS.md": "9bfeda4069826e518a4f4fdae45bd40f4393c1c5aaf146149d3eb4aece30be83",
|
|
6
6
|
"packs/README.md": "d2de5f9556f4c8e521103474bde74636e02cc805f9bf5312a3a61a1f3eb45d8f",
|
|
7
7
|
"packs/_example/.apm/skills/example-skill/SKILL.md": "33be8cbf4b2c014a5a63e788b7d0b350ad8061c6c4b2579369a3e984135bf9f1",
|
|
8
8
|
"packs/_example/.apm/skills/example-skill/evals/eval_queries.json": "f41ecda0834a22f3b4823c81ab02e58b0e4beba610e3b40c185579abff9cfeee",
|
|
9
|
-
"packs/_example/.claude-plugin/plugin.json": "
|
|
9
|
+
"packs/_example/.claude-plugin/plugin.json": "7f94084a56260eed225ec47ac82042fe9029c594557cca760a459885d03ccc26",
|
|
10
10
|
"packs/_example/README.md": "ef130c9c1f97a75a07cc59fc55fc5b3bf71846dd2f06c3cddf5a1154023b6ef6",
|
|
11
|
-
"packs/_example/pack.toml": "
|
|
11
|
+
"packs/_example/pack.toml": "f19a0be9fca99a6a0e3ce2d5cd188bf98000f0a4f186954fb42a0c99c6859701",
|
|
12
12
|
"profiles/AGENTS.md": "8950438d9e0f57c13613104c88c90b598b53196c91bfdced6d63e4e01b5e9254",
|
|
13
13
|
"profiles/README.md": "a0b0268edc57fc575f7fea08f3363ba7da9f6e67dc4a0a6f8bd38c9668c97922",
|
|
14
14
|
"profiles/_example/README.md": "164494df049ddce3e57cb44ed604cb3d39be0a6ec2072e609ea3fa4bbfc74c72",
|
|
15
|
-
"profiles/_example/profile.toml": "68af18cf50fa0327a9776b029c92bb1cf82710c649691b3ac889eb8537b8eac7"
|
|
15
|
+
"profiles/_example/profile.toml": "68af18cf50fa0327a9776b029c92bb1cf82710c649691b3ac889eb8537b8eac7",
|
|
16
|
+
"tests/conformance/test_gemini_admissibility.py": "8b337da9272823aed2cb22041b3f9fd27549f075f28b9817efd5be8f8c5bb948",
|
|
17
|
+
"tests/conformance/test_pack_metadata.py": "8ea175b88cc6e10ba10cda87676fc225ee2b968d710c8e6ab05fb20e31ec978a",
|
|
18
|
+
"tests/conformance/test_shared_library_boundaries.py": "5e07783459336e657a355f43aa5a9cf6c138603624daec258ecc0fa3d74239c3"
|
|
16
19
|
},
|
|
17
20
|
"version": 1
|
|
18
21
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: example-skill
|
|
3
|
+
description: "Demonstrate the standard skill layout. Triggers on: run example, show example skill output. Near-miss: requesting a demo or test of any skill (route those to the specific skill)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Example Skill
|
|
7
|
+
|
|
8
|
+
This skill is a minimal demonstration of the standard SKILL.md layout. Replace this content
|
|
9
|
+
with your skill's actual instructions.
|
|
10
|
+
|
|
11
|
+
## What it does
|
|
12
|
+
|
|
13
|
+
Produces a short greeting and lists any files the user has mentioned.
|
|
14
|
+
|
|
15
|
+
## When to use this skill
|
|
16
|
+
|
|
17
|
+
The agent invokes this skill when the user asks to "run example" or "show example skill output".
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. Greet the user.
|
|
22
|
+
2. List any files mentioned in the conversation.
|
|
23
|
+
3. Summarize what the example-skill would do in a real pack.
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
|
|
27
|
+
A short greeting and a bullet list.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "run example",
|
|
4
|
+
"skill": "example-skill",
|
|
5
|
+
"should_trigger": true
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"query": "show example skill output",
|
|
9
|
+
"skill": "example-skill",
|
|
10
|
+
"should_trigger": true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"query": "what does example-skill do",
|
|
14
|
+
"skill": "example-skill",
|
|
15
|
+
"should_trigger": true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"query": "demonstrate the example",
|
|
19
|
+
"skill": "example-skill",
|
|
20
|
+
"should_trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "run the example skill now",
|
|
24
|
+
"skill": "example-skill",
|
|
25
|
+
"should_trigger": true
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"query": "give me a demo",
|
|
29
|
+
"skill": "example-skill",
|
|
30
|
+
"should_trigger": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"query": "show me a test run of architect-design",
|
|
34
|
+
"skill": "example-skill",
|
|
35
|
+
"should_trigger": false
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"query": "how do I install a pack",
|
|
39
|
+
"skill": "example-skill",
|
|
40
|
+
"should_trigger": false
|
|
41
|
+
}
|
|
42
|
+
]
|
agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "example-pack",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The skeleton to copy when you start a new pack.",
|
|
5
|
+
"displayName": "Example Pack",
|
|
6
|
+
"category": "productivity",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"example",
|
|
9
|
+
"template"
|
|
10
|
+
],
|
|
11
|
+
"skills": [
|
|
12
|
+
"example-skill"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[pack]
|
|
2
|
+
name = "example-pack"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "The skeleton to copy when you start a new pack."
|
|
5
|
+
display_name = "Example Pack"
|
|
6
|
+
categories = ["productivity"]
|
|
7
|
+
keywords = ["example", "template"]
|
|
8
|
+
|
|
9
|
+
[pack.adapter-contract]
|
|
10
|
+
version = "0.8"
|
|
11
|
+
|
|
12
|
+
[pack.install]
|
|
13
|
+
default-scope = "repo"
|
|
14
|
+
allowed-scopes = ["repo", "user"]
|
|
15
|
+
|
|
16
|
+
[pack.evals]
|
|
17
|
+
skills = ["example-skill"]
|
|
18
|
+
|
|
19
|
+
[pack.links]
|
|
20
|
+
documentation = "https://example.com/docs"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""Portable Gemini adapter rules over every pack in a catalogue."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import tomllib
|
|
6
|
+
from importlib.resources import files
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
CATALOGUE_ROOT = Path(__file__).resolve().parents[2]
|
|
10
|
+
PACKS_DIR = CATALOGUE_ROOT / "packs"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _adapter_contract() -> dict:
|
|
14
|
+
"""Load the runtime adapter contract from the installed engine data."""
|
|
15
|
+
resource = files("agentbundle").joinpath("_data", "adapter.toml")
|
|
16
|
+
return tomllib.loads(resource.read_text(encoding="utf-8"))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _pack_dirs() -> list[Path]:
|
|
20
|
+
return sorted(
|
|
21
|
+
path
|
|
22
|
+
for path in PACKS_DIR.iterdir()
|
|
23
|
+
if path.is_dir()
|
|
24
|
+
and not path.name.startswith("_")
|
|
25
|
+
and (path / "pack.toml").is_file()
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_every_declared_agent_tool_is_mapped() -> None:
|
|
30
|
+
declared: set[str] = set()
|
|
31
|
+
for agent_path in PACKS_DIR.glob("*/.apm/agents/*.md"):
|
|
32
|
+
for line in agent_path.read_text(encoding="utf-8").splitlines():
|
|
33
|
+
if line.startswith("tools:"):
|
|
34
|
+
declared.update(
|
|
35
|
+
item.strip()
|
|
36
|
+
for item in line.split(":", 1)[1].split(",")
|
|
37
|
+
if item.strip()
|
|
38
|
+
)
|
|
39
|
+
if not declared:
|
|
40
|
+
return
|
|
41
|
+
contract = _adapter_contract()
|
|
42
|
+
values = contract["frontmatter-mapping"]["gemini-agent-frontmatter"]["tools"][
|
|
43
|
+
"values"
|
|
44
|
+
]
|
|
45
|
+
assert declared <= set(values), f"unmapped agent tools: {declared - set(values)}"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_every_compatible_pack_admits_gemini_in_both_scopes() -> None:
|
|
49
|
+
from agentbundle.commands.install import _resolve_target_adapter
|
|
50
|
+
|
|
51
|
+
for pack_dir in _pack_dirs():
|
|
52
|
+
data = tomllib.loads((pack_dir / "pack.toml").read_text(encoding="utf-8"))
|
|
53
|
+
pack = data["pack"]
|
|
54
|
+
allowed = pack.get("install", {}).get("allowed-adapters")
|
|
55
|
+
if allowed is not None and "gemini" not in allowed:
|
|
56
|
+
continue
|
|
57
|
+
contract_version = pack.get("adapter-contract", {}).get("version", "0.13")
|
|
58
|
+
for scope in ("repo", "user"):
|
|
59
|
+
resolved = _resolve_target_adapter(
|
|
60
|
+
pack_dir,
|
|
61
|
+
scope=scope,
|
|
62
|
+
adapter="gemini",
|
|
63
|
+
allowed_adapters=allowed,
|
|
64
|
+
contract_version=contract_version,
|
|
65
|
+
command_name="install",
|
|
66
|
+
)
|
|
67
|
+
assert resolved == "gemini", f"{pack_dir.name} @ {scope}"
|
agentbundle-0.31.1/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Portable catalogue manifest and marketplace rules."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import tomllib
|
|
7
|
+
from importlib.resources import files
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
|
|
12
|
+
CATALOGUE_ROOT = Path(__file__).resolve().parents[2]
|
|
13
|
+
PACKS_DIR = CATALOGUE_ROOT / "packs"
|
|
14
|
+
MARKETPLACE_PATH = CATALOGUE_ROOT / ".claude-plugin" / "marketplace.json"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _bundled_schema(name: str) -> dict:
|
|
18
|
+
"""Load a runtime schema without requiring a source-checkout contract tree."""
|
|
19
|
+
resource = files("agentbundle").joinpath("_data", name)
|
|
20
|
+
return json.loads(resource.read_text(encoding="utf-8"))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _pack_dirs() -> list[Path]:
|
|
24
|
+
return sorted(
|
|
25
|
+
path
|
|
26
|
+
for path in PACKS_DIR.iterdir()
|
|
27
|
+
if path.is_dir()
|
|
28
|
+
and not path.name.startswith("_")
|
|
29
|
+
and (path / "pack.toml").is_file()
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _pack_data(pack_dir: Path) -> dict:
|
|
34
|
+
return tomllib.loads((pack_dir / "pack.toml").read_text(encoding="utf-8"))[
|
|
35
|
+
"pack"
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.parametrize("pack_dir", _pack_dirs(), ids=lambda path: path.name)
|
|
40
|
+
def test_pack_declares_enriched_metadata(pack_dir: Path) -> None:
|
|
41
|
+
pack = _pack_data(pack_dir)
|
|
42
|
+
assert pack.get("readme") == "README.md", f"{pack_dir.name}: readme"
|
|
43
|
+
assert (pack_dir / "README.md").is_file(), f"{pack_dir.name}: README.md"
|
|
44
|
+
assert isinstance(pack.get("license"), str) and pack["license"]
|
|
45
|
+
links = pack.get("links")
|
|
46
|
+
assert isinstance(links, dict)
|
|
47
|
+
assert isinstance(links.get("repository"), str) and links["repository"]
|
|
48
|
+
for field in ("categories", "keywords"):
|
|
49
|
+
values = pack.get(field)
|
|
50
|
+
assert isinstance(values, list) and values, f"{pack_dir.name}: {field}"
|
|
51
|
+
assert len(values) <= 5, f"{pack_dir.name}: {field} capped at 5"
|
|
52
|
+
maintainers = pack.get("maintainers")
|
|
53
|
+
assert isinstance(maintainers, list) and maintainers
|
|
54
|
+
assert isinstance(maintainers[0].get("name"), str) and maintainers[0]["name"]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@pytest.mark.parametrize("pack_dir", _pack_dirs(), ids=lambda path: path.name)
|
|
58
|
+
def test_pack_and_plugin_versions_match(pack_dir: Path) -> None:
|
|
59
|
+
plugin_path = pack_dir / ".claude-plugin" / "plugin.json"
|
|
60
|
+
if not plugin_path.exists():
|
|
61
|
+
return
|
|
62
|
+
plugin = json.loads(plugin_path.read_text(encoding="utf-8"))
|
|
63
|
+
assert plugin.get("version") == _pack_data(pack_dir)["version"]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_source_plugin_manifests_obey_schema() -> None:
|
|
67
|
+
from agentbundle.build.validate import validate
|
|
68
|
+
|
|
69
|
+
manifests = sorted(
|
|
70
|
+
path
|
|
71
|
+
for pack_dir in _pack_dirs()
|
|
72
|
+
if (path := pack_dir / ".claude-plugin" / "plugin.json").is_file()
|
|
73
|
+
)
|
|
74
|
+
if not manifests:
|
|
75
|
+
return
|
|
76
|
+
schema = _bundled_schema("plugin-manifest.schema.json")
|
|
77
|
+
for path in manifests:
|
|
78
|
+
content = json.loads(path.read_text(encoding="utf-8"))
|
|
79
|
+
assert "hooks" not in content, f"{path.relative_to(CATALOGUE_ROOT)}: hooks"
|
|
80
|
+
errors = validate(content, schema)
|
|
81
|
+
assert not errors, f"{path.relative_to(CATALOGUE_ROOT)}: {errors}"
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_root_marketplace_entries_obey_schema() -> None:
|
|
85
|
+
from agentbundle.build.validate import validate
|
|
86
|
+
|
|
87
|
+
if not MARKETPLACE_PATH.is_file():
|
|
88
|
+
return
|
|
89
|
+
marketplace = json.loads(MARKETPLACE_PATH.read_text(encoding="utf-8"))
|
|
90
|
+
entries = marketplace.get("plugins", [])
|
|
91
|
+
if not entries:
|
|
92
|
+
return
|
|
93
|
+
schema = _bundled_schema("marketplace-entry.schema.json")
|
|
94
|
+
for entry in entries:
|
|
95
|
+
assert not validate(entry, schema), entry.get("name", "<unnamed>")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def test_root_marketplace_has_portable_metadata_shapes() -> None:
|
|
99
|
+
if not MARKETPLACE_PATH.is_file():
|
|
100
|
+
return
|
|
101
|
+
marketplace = json.loads(MARKETPLACE_PATH.read_text(encoding="utf-8"))
|
|
102
|
+
assert "name" in marketplace
|
|
103
|
+
assert isinstance(marketplace.get("owner"), dict)
|
|
104
|
+
for plugin in marketplace.get("plugins", []):
|
|
105
|
+
assert isinstance(plugin.get("author"), dict), plugin.get("name")
|
|
106
|
+
source = plugin.get("source")
|
|
107
|
+
if source is None:
|
|
108
|
+
continue
|
|
109
|
+
assert isinstance(source, dict), plugin.get("name")
|
|
110
|
+
assert source.get("source") == "git-subdir", plugin.get("name")
|
|
111
|
+
assert isinstance(source.get("url"), str) and source["url"].startswith(
|
|
112
|
+
"https://github.com/"
|
|
113
|
+
)
|
|
114
|
+
assert source.get("path")
|
|
115
|
+
assert source.get("ref") or source.get("sha")
|
|
116
|
+
assert "branch" not in source and "directory" not in source
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Portable rules for retired credential-shim copies in pack scripts."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
CATALOGUE_ROOT = Path(__file__).resolve().parents[2]
|
|
9
|
+
PACKS_DIR = CATALOGUE_ROOT / "packs"
|
|
10
|
+
SHIM_BASENAMES = (
|
|
11
|
+
"credentials_shim.py",
|
|
12
|
+
"_keychain_macos.py",
|
|
13
|
+
"_credman_windows.py",
|
|
14
|
+
)
|
|
15
|
+
SHIM_IMPORT_RE = re.compile(
|
|
16
|
+
r"(?:from\s+\.{0,2}(?:[\w.]+\.)?credentials_shim\s+import"
|
|
17
|
+
r"|import\s+(?:[\w.]+\.)?credentials_shim\b)"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_no_pack_skill_carries_a_retired_shim_copy() -> None:
|
|
22
|
+
offenders = [
|
|
23
|
+
str(path.relative_to(CATALOGUE_ROOT))
|
|
24
|
+
for scripts_dir in PACKS_DIR.glob("*/.apm/skills/*/scripts")
|
|
25
|
+
for basename in SHIM_BASENAMES
|
|
26
|
+
if (path := scripts_dir / basename).exists()
|
|
27
|
+
]
|
|
28
|
+
assert not offenders, offenders
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_no_pack_skill_imports_the_retired_shim() -> None:
|
|
32
|
+
offenders: list[str] = []
|
|
33
|
+
for path in PACKS_DIR.glob("*/.apm/skills/*/scripts/*.py"):
|
|
34
|
+
try:
|
|
35
|
+
source = path.read_text(encoding="utf-8")
|
|
36
|
+
except OSError:
|
|
37
|
+
continue
|
|
38
|
+
if SHIM_IMPORT_RE.search(source):
|
|
39
|
+
offenders.append(str(path.relative_to(CATALOGUE_ROOT)))
|
|
40
|
+
assert not offenders, offenders
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"""Canonical stdlib-only install-marker writer for the Claude-plugins and APM install routes.
|
|
2
2
|
|
|
3
3
|
This script is invoked by a ``SessionStart`` hook derived by ``agentbundle build``
|
|
4
|
-
into
|
|
5
|
-
- ``dist/claude-plugins/<pack>/.claude-plugin/plugin.json`` — claude-plugins
|
|
6
|
-
|
|
4
|
+
into each pack's projected output:
|
|
5
|
+
- ``dist/claude-plugins/<pack>/.claude-plugin/plugin.json`` — claude-plugins
|
|
6
|
+
route, for user-capable packs only (a plugin's code lands in the adopter's
|
|
7
|
+
global cache, so a pack whose ``allowed-scopes`` omits ``user`` is not
|
|
8
|
+
projected onto this route at all)
|
|
9
|
+
- ``dist/apm/<pack>/.apm/hooks/install-marker.json`` — APM route,
|
|
10
|
+
every pack
|
|
7
11
|
|
|
8
12
|
It detects first-install-or-update and writes a ``[[packs-installed]]`` entry
|
|
9
13
|
to the scope-correct ``.adapt-install-marker.toml`` file so the existing core
|
|
@@ -25,12 +25,12 @@ import sys
|
|
|
25
25
|
from pathlib import Path
|
|
26
26
|
|
|
27
27
|
from agentbundle.build.contract import load as load_contract
|
|
28
|
-
from agentbundle.build.validate import validate as validate_instance
|
|
29
28
|
from agentbundle.build.lint_packs import cmd_lint_packs
|
|
30
|
-
from agentbundle.build.main import cmd_build
|
|
29
|
+
from agentbundle.build.main import _read_bundled, cmd_build
|
|
31
30
|
from agentbundle.build.self_host import cmd_check, cmd_self
|
|
31
|
+
from agentbundle.build.validate import validate as validate_instance
|
|
32
32
|
|
|
33
|
-
__all__ = ["main"]
|
|
33
|
+
__all__ = ["main", "cmd_lint_packs"]
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
def _cmd_validate(args: argparse.Namespace) -> int:
|
|
@@ -42,14 +42,12 @@ def _cmd_validate(args: argparse.Namespace) -> int:
|
|
|
42
42
|
)
|
|
43
43
|
return 1
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
/ "adapter.schema.json"
|
|
49
|
-
)
|
|
50
|
-
if not schema_path.exists():
|
|
45
|
+
try:
|
|
46
|
+
schema_text = _read_bundled("adapter.schema.json")
|
|
47
|
+
except (FileNotFoundError, ModuleNotFoundError):
|
|
51
48
|
print(
|
|
52
|
-
|
|
49
|
+
"validate: adapter.schema.json not found in package data or "
|
|
50
|
+
"repository contracts",
|
|
53
51
|
file=sys.stderr,
|
|
54
52
|
)
|
|
55
53
|
return 1
|
|
@@ -60,7 +58,7 @@ def _cmd_validate(args: argparse.Namespace) -> int:
|
|
|
60
58
|
print(f"validate: failed to load {contract_path}: {exc}", file=sys.stderr)
|
|
61
59
|
return 1
|
|
62
60
|
|
|
63
|
-
schema = json.loads(
|
|
61
|
+
schema = json.loads(schema_text)
|
|
64
62
|
errors = validate_instance(contract, schema)
|
|
65
63
|
if errors:
|
|
66
64
|
print(
|
|
@@ -172,7 +170,8 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
172
170
|
|
|
173
171
|
def _cmd_build_shim(args) -> int:
|
|
174
172
|
print(
|
|
175
|
-
"agentbundle.build build is deprecated;
|
|
173
|
+
"agentbundle.build build is deprecated; "
|
|
174
|
+
"use 'agentbundle catalogue build --root .' instead",
|
|
176
175
|
file=sys.stderr,
|
|
177
176
|
)
|
|
178
177
|
return int(cmd_build(args))
|
|
@@ -180,7 +179,8 @@ def _cmd_build_shim(args) -> int:
|
|
|
180
179
|
|
|
181
180
|
def _cmd_self_shim(args) -> int:
|
|
182
181
|
print(
|
|
183
|
-
"agentbundle.build self is deprecated;
|
|
182
|
+
"agentbundle.build self is deprecated; "
|
|
183
|
+
"use 'agentbundle catalogue self-host --write --root .' instead",
|
|
184
184
|
file=sys.stderr,
|
|
185
185
|
)
|
|
186
186
|
return int(cmd_self(args))
|
|
@@ -188,7 +188,8 @@ def _cmd_self_shim(args) -> int:
|
|
|
188
188
|
|
|
189
189
|
def _cmd_check_shim(args) -> int:
|
|
190
190
|
print(
|
|
191
|
-
"agentbundle.build check is deprecated;
|
|
191
|
+
"agentbundle.build check is deprecated; "
|
|
192
|
+
"use 'agentbundle catalogue self-host --check --root .' instead",
|
|
192
193
|
file=sys.stderr,
|
|
193
194
|
)
|
|
194
195
|
return int(cmd_check(args))
|
|
@@ -196,7 +197,8 @@ def _cmd_check_shim(args) -> int:
|
|
|
196
197
|
|
|
197
198
|
def _cmd_lint_packs_shim(args) -> int:
|
|
198
199
|
print(
|
|
199
|
-
"agentbundle.build lint-packs is deprecated;
|
|
200
|
+
"agentbundle.build lint-packs is deprecated; "
|
|
201
|
+
"use 'agentbundle catalogue lint --root .' instead",
|
|
200
202
|
file=sys.stderr,
|
|
201
203
|
)
|
|
202
204
|
from agentbundle.catalogue_tooling.lint import lint_catalogue, render_table
|