agentbundle 0.29.7__tar.gz → 0.29.8__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.29.7 → agentbundle-0.29.8}/PKG-INFO +1 -1
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +37 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/manifest.json +1 -1
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/install-marker.py +88 -18
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/version.py +1 -1
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/PKG-INFO +1 -1
- {agentbundle-0.29.7 → agentbundle-0.29.8}/pyproject.toml +1 -1
- {agentbundle-0.29.7 → agentbundle-0.29.8}/README-pypi.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/README.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/__main__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/marketplace-entry.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/main.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_claude_code.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_codex.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_copilot.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_cursor.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_gemini.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_kiro.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_build_ships_seeds.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_contract.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_contract_scope.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_contract_v07.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_contract_v08.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_end_to_end_build.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_lint_packs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_pack_schema.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_pipeline.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_projectable_subset.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_projections_merge_json.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_scope_rails.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_security.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_self_host_check.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shared_libs_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_workspace_status_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_writers_emit_lf.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/package.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/categories.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/cli.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/config.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/oplog.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/render.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/safety.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/scope.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/statelock.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/user_config.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/workspace_mcp.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/SOURCES.txt +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/setup.cfg +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_linear_primitive.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.29.7 → agentbundle-0.29.8}/tests/test_workspace_mcp_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.8
|
|
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: Apache-2.0 OR MIT
|
|
@@ -36,6 +36,43 @@ and `version`; `[pack.adapter-contract]` with `version`.
|
|
|
36
36
|
- [packs/README.md](../../../packs/README.md) — pack layout, versioning rules, lint commands.
|
|
37
37
|
- [packs/AGENTS.md](../../../packs/AGENTS.md) — agent-facing schema map and primary workflow.
|
|
38
38
|
|
|
39
|
+
### `[pack].description` — display copy
|
|
40
|
+
|
|
41
|
+
`[pack].description` is read by a **person** deciding whether to install: in a
|
|
42
|
+
marketplace browser, a catalogue listing, or CLI output. It is not read by the model.
|
|
43
|
+
|
|
44
|
+
That makes it a different artifact from a skill's or agent's `description`, which the
|
|
45
|
+
model reads to decide whether to **activate** the primitive. Length is load-bearing
|
|
46
|
+
there and shortening it degrades activation; per-target caps in
|
|
47
|
+
`contracts/target-vocab.toml` govern it. Do not carry habits from one to the other.
|
|
48
|
+
|
|
49
|
+
**Shape.** First sentence names the job the adopter accomplishes — verb-first, and
|
|
50
|
+
readable on its own. An optional second sentence carries a compressed capability list
|
|
51
|
+
or the one thing that distinguishes this pack. Then stop.
|
|
52
|
+
|
|
53
|
+
> Supervised coding from brief to merged PR. A plan, execute, verify, review loop with
|
|
54
|
+
> spec-driven development, adversarial and security reviewers, and pre-commit gates.
|
|
55
|
+
|
|
56
|
+
**Anti-patterns**, each of which has shipped here before:
|
|
57
|
+
|
|
58
|
+
| Anti-pattern | Instead |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| Opening with a component inventory (`Core: work-loop, new-spec, bug-fix, …`) | Lead with the outcome; the inventory belongs in the README |
|
|
61
|
+
| Repo-insider vocabulary (`forked-context`, `the grown-up successor to X`) | Words a first-time reader resolves without this repo |
|
|
62
|
+
| Cross-pack references (`co-installs with X`, `feeds Y's queue`) | Nothing that assumes another pack is known |
|
|
63
|
+
| Provenance name-drops (`(STORM, PRISMA, ACH, GRADE)`) | Name a framework only when the reader is buying it |
|
|
64
|
+
| Negative space (`no stack, no values tables, no pixel comps`) | Say what it does; the README can scope what it doesn't |
|
|
65
|
+
| Internal paths (`~/.agentbundle/bin/`) | Nothing an adopter cannot act on from a listing |
|
|
66
|
+
|
|
67
|
+
**Discoverability is carried elsewhere** — `[pack].keywords` and `[pack].categories`
|
|
68
|
+
— so prose does not need to be keyword-dense to stay findable.
|
|
69
|
+
|
|
70
|
+
There is no target-imposed length limit. `tools/lint-pack-descriptions.py` fails the
|
|
71
|
+
build past a deliberately loose backstop, which exists only to stop runaway drift (the
|
|
72
|
+
field once reached 1122 characters); it is not the quality bar. **This section is.** A
|
|
73
|
+
description inside the backstop can still be bad, and a length check cannot tell —
|
|
74
|
+
review against the shape and the table above.
|
|
75
|
+
|
|
39
76
|
---
|
|
40
77
|
|
|
41
78
|
## 3. Pack README standard
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"guides/_shared/reference/catalogue-authoring-standards.md": "
|
|
3
|
+
"guides/_shared/reference/catalogue-authoring-standards.md": "f5e41498139ca335b8a679644eb02d2a35abb2234a77b5b14e7ff90da02722b9",
|
|
4
4
|
"guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
|
|
5
5
|
"packs/AGENTS.md": "9bfeda4069826e518a4f4fdae45bd40f4393c1c5aaf146149d3eb4aece30be83",
|
|
6
6
|
"packs/README.md": "d2de5f9556f4c8e521103474bde74636e02cc805f9bf5312a3a61a1f3eb45d8f",
|
|
@@ -213,11 +213,66 @@ def _assert_portable_name(component: str) -> None:
|
|
|
213
213
|
# ---------------------------------------------------------------------------
|
|
214
214
|
|
|
215
215
|
|
|
216
|
+
# Settings files are read under an adopter's ``${CLAUDE_PROJECT_DIR}``, whose
|
|
217
|
+
# contents a cloned repo controls. Bound the read itself — measuring after
|
|
218
|
+
# `read_text()` has already pulled the whole file in is no bound at all.
|
|
219
|
+
_SETTINGS_READ_CAP = 1_048_576 # 1 MiB
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def _plugin_marketplace(
|
|
223
|
+
plugin_root: pathlib.Path,
|
|
224
|
+
plugin_name: str,
|
|
225
|
+
) -> "str | None":
|
|
226
|
+
"""Return the marketplace this pack was installed from, or ``None``.
|
|
227
|
+
|
|
228
|
+
The Claude-plugins client installs into
|
|
229
|
+
``<config>/plugins/cache/<marketplace>/<plugin>/<version>``, so the pack
|
|
230
|
+
can read its own marketplace identity back out of ``${CLAUDE_PLUGIN_ROOT}``.
|
|
231
|
+
Verified against Claude Code 2.1.223.
|
|
232
|
+
|
|
233
|
+
Returns ``None`` when ``plugin_root`` does not have that shape. The caller
|
|
234
|
+
then matches on bare pack name alone — a layout we do not recognise must
|
|
235
|
+
degrade to the historical behaviour, not to "never opted in" (that is the
|
|
236
|
+
very failure this function's caller exists to fix).
|
|
237
|
+
"""
|
|
238
|
+
parts = plugin_root.parts
|
|
239
|
+
if len(parts) < 4:
|
|
240
|
+
return None
|
|
241
|
+
if parts[-4] != "cache" or parts[-2] != plugin_name:
|
|
242
|
+
return None
|
|
243
|
+
return parts[-3] or None
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _entry_matches(
|
|
247
|
+
entry: str,
|
|
248
|
+
plugin_name: str,
|
|
249
|
+
marketplace: "str | None",
|
|
250
|
+
) -> bool:
|
|
251
|
+
"""Does one ``enabledPlugins`` identifier name *this* pack?
|
|
252
|
+
|
|
253
|
+
Current clients write a qualified ``name@marketplace``; older ones wrote a
|
|
254
|
+
bare ``name``. A qualified identifier must agree on *both* halves whenever
|
|
255
|
+
we know our own marketplace, so another vendor's ``core@other-marketplace``
|
|
256
|
+
does not opt in a ``core`` that came from somewhere else.
|
|
257
|
+
"""
|
|
258
|
+
name, sep, entry_marketplace = entry.strip().partition("@")
|
|
259
|
+
if name.strip() != plugin_name:
|
|
260
|
+
return False
|
|
261
|
+
if not sep:
|
|
262
|
+
# Bare name — the identifier makes no marketplace claim to check.
|
|
263
|
+
return True
|
|
264
|
+
if marketplace is None:
|
|
265
|
+
# Our own identity is unknown; the name is all there is to compare.
|
|
266
|
+
return True
|
|
267
|
+
return entry_marketplace.strip() == marketplace
|
|
268
|
+
|
|
269
|
+
|
|
216
270
|
def _detect_origin(
|
|
217
271
|
*,
|
|
218
272
|
plugin_name: str,
|
|
219
273
|
home: pathlib.Path,
|
|
220
274
|
project_dir: pathlib.Path | None,
|
|
275
|
+
marketplace: "str | None",
|
|
221
276
|
) -> str | None:
|
|
222
277
|
"""Walk the three ``enabledPlugins`` settings files in precedence order.
|
|
223
278
|
|
|
@@ -226,9 +281,17 @@ def _detect_origin(
|
|
|
226
281
|
(pack is not enabled at any scope).
|
|
227
282
|
|
|
228
283
|
Precedence: local → project → user (most-specific wins).
|
|
229
|
-
|
|
230
|
-
``enabledPlugins``
|
|
231
|
-
|
|
284
|
+
|
|
285
|
+
``enabledPlugins`` carries two shapes. Current clients write an **object**
|
|
286
|
+
keyed by plugin identifier whose boolean value is the enabled state — only
|
|
287
|
+
``true`` counts as opted in, since ``false`` is an adopter who deliberately
|
|
288
|
+
disabled the pack. Older clients wrote a **JSON array** of identifiers;
|
|
289
|
+
both are accepted.
|
|
290
|
+
|
|
291
|
+
Every other outcome is "not opted in at that scope" and falls through: a
|
|
292
|
+
missing file, a non-regular path, a file past ``_SETTINGS_READ_CAP``,
|
|
293
|
+
undecodable bytes, malformed JSON, an absent ``enabledPlugins`` key, or a
|
|
294
|
+
value of any other type. A hostile settings file must never raise.
|
|
232
295
|
"""
|
|
233
296
|
candidates: list[tuple[str, pathlib.Path]] = []
|
|
234
297
|
|
|
@@ -239,32 +302,38 @@ def _detect_origin(
|
|
|
239
302
|
candidates.append(("user", home / ".claude" / "settings.json"))
|
|
240
303
|
|
|
241
304
|
for origin, settings_path in candidates:
|
|
242
|
-
|
|
305
|
+
# `.is_file()` where the old code used `.exists()`: a FIFO exists, and
|
|
306
|
+
# opening one for reading blocks until a writer appears. A character
|
|
307
|
+
# device such as /dev/zero exists too, and reads forever.
|
|
308
|
+
if not settings_path.is_file():
|
|
243
309
|
continue
|
|
244
310
|
try:
|
|
245
|
-
|
|
311
|
+
with settings_path.open("rb") as fh:
|
|
312
|
+
blob = fh.read(_SETTINGS_READ_CAP + 1)
|
|
246
313
|
except OSError:
|
|
247
314
|
continue
|
|
248
|
-
|
|
249
|
-
if len(read_text) > 1_048_576:
|
|
315
|
+
if len(blob) > _SETTINGS_READ_CAP:
|
|
250
316
|
continue
|
|
251
317
|
try:
|
|
252
|
-
|
|
253
|
-
|
|
318
|
+
# `json.loads` decodes UTF-8 itself; undecodable bytes raise
|
|
319
|
+
# UnicodeDecodeError and malformed JSON raises JSONDecodeError,
|
|
320
|
+
# both subclasses of ValueError.
|
|
321
|
+
raw = json.loads(blob)
|
|
322
|
+
except ValueError:
|
|
254
323
|
continue
|
|
255
324
|
if not isinstance(raw, dict):
|
|
256
325
|
continue
|
|
257
326
|
enabled = raw.get("enabledPlugins")
|
|
258
|
-
if
|
|
327
|
+
if isinstance(enabled, dict):
|
|
328
|
+
entries: list = [key for key, value in enabled.items() if value is True]
|
|
329
|
+
elif isinstance(enabled, list):
|
|
330
|
+
entries = enabled
|
|
331
|
+
else:
|
|
259
332
|
continue
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
continue
|
|
265
|
-
# Match by pack name as a prefix component (before '@').
|
|
266
|
-
entry_name = entry.split("@")[0].strip()
|
|
267
|
-
if entry_name == plugin_name:
|
|
333
|
+
for entry in entries:
|
|
334
|
+
if isinstance(entry, str) and _entry_matches(
|
|
335
|
+
entry, plugin_name, marketplace
|
|
336
|
+
):
|
|
268
337
|
return origin
|
|
269
338
|
|
|
270
339
|
return None
|
|
@@ -837,6 +906,7 @@ def _main_claude_plugins(args: argparse.Namespace) -> int:
|
|
|
837
906
|
plugin_name=pack_name,
|
|
838
907
|
home=home,
|
|
839
908
|
project_dir=project_dir,
|
|
909
|
+
marketplace=_plugin_marketplace(plugin_root, pack_name),
|
|
840
910
|
)
|
|
841
911
|
|
|
842
912
|
if origin is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.8
|
|
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: Apache-2.0 OR MIT
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentbundle"
|
|
7
|
-
version = "0.29.
|
|
7
|
+
version = "0.29.8"
|
|
8
8
|
description = "npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent."
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
10
|
dependencies = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/packs/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/catalogue-scaffold/profiles/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/_data/plugin-manifest.derived.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/copilot_hooks_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/gemini_command_toml.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/projections/merge_into_agent_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/composite-agents-md.toml
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/composite-marketplace.toml
RENAMED
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/per-pack-apm-package.toml
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/recipes/per-pack-claude-plugin.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_claude_code.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_adapter_kiro_alias.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_direct_directory_cleanup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_lint_agents_md_risk_block.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_pack_schema_install.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_plugin_manifest_schema.py
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_projectable_subset.py
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_projections_merge_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_self_host_fixture_guard.py
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_self_host_recipe_config.py
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shared_libs_projection.py
RENAMED
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_shared_prefix_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/build/tests/test_user_libs_projection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/initialise_self_hosted.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.7 → agentbundle-0.29.8}/agentbundle/catalogue_tooling/self_host_windows.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|