agentbundle 0.29.4__tar.gz → 0.29.5__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.4 → agentbundle-0.29.5}/PKG-INFO +9 -2
- {agentbundle-0.29.4 → agentbundle-0.29.5}/README-pypi.md +8 -1
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +39 -5
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/manifest.json +2 -2
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +3 -2
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/package.py +84 -28
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/self_host_windows.py +14 -3
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/version.py +1 -1
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/PKG-INFO +9 -2
- {agentbundle-0.29.4 → agentbundle-0.29.5}/pyproject.toml +1 -1
- {agentbundle-0.29.4 → agentbundle-0.29.5}/README.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/__main__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/main.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_claude_code.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_codex.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_copilot.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_cursor.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_gemini.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_build_ships_seeds.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_scope.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_v07.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_v08.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_end_to_end_build.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_packs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_pipeline.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_projectable_subset.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_projections_merge_json.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_scope_rails.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_security.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_check.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_shared_libs_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_workspace_status_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/tests/test_writers_emit_lf.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/categories.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/cli.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/config.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/oplog.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/render.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/safety.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/scope.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/statelock.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/user_config.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/workspace_mcp.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/SOURCES.txt +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/setup.cfg +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_linear_primitive.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.29.4 → agentbundle-0.29.5}/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.5
|
|
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
|
|
@@ -156,6 +156,13 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
|
|
|
156
156
|
descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
|
|
157
157
|
produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
|
|
158
158
|
|
|
159
|
+
Build residue is excluded, so it does not matter whether you packaged a working
|
|
160
|
+
tree you had just tested or npm-installed in. Pruned at every level of a pack:
|
|
161
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `.tox`,
|
|
162
|
+
`.hypothesis`, `htmlcov`, `node_modules`, `.venv`, `venv` — plus `*.pyc`,
|
|
163
|
+
`*.pyo`, `.DS_Store`, `coverage.xml` and `.coverage*` shards. The drop is
|
|
164
|
+
silent, so do not name a directory you mean to ship after one of those.
|
|
165
|
+
|
|
159
166
|
**Source distribution for air-gapped or self-hosted catalogues:**
|
|
160
167
|
|
|
161
168
|
```bash
|
|
@@ -167,7 +174,7 @@ agentbundle catalogue package \
|
|
|
167
174
|
--output dist/
|
|
168
175
|
```
|
|
169
176
|
|
|
170
|
-
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files). Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
177
|
+
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files), with the same build-residue exclusions as the default flavour. Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
171
178
|
|
|
172
179
|
**Org bootstrap — ship the default channel in your fork:**
|
|
173
180
|
|
|
@@ -134,6 +134,13 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
|
|
|
134
134
|
descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
|
|
135
135
|
produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
|
|
136
136
|
|
|
137
|
+
Build residue is excluded, so it does not matter whether you packaged a working
|
|
138
|
+
tree you had just tested or npm-installed in. Pruned at every level of a pack:
|
|
139
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `.tox`,
|
|
140
|
+
`.hypothesis`, `htmlcov`, `node_modules`, `.venv`, `venv` — plus `*.pyc`,
|
|
141
|
+
`*.pyo`, `.DS_Store`, `coverage.xml` and `.coverage*` shards. The drop is
|
|
142
|
+
silent, so do not name a directory you mean to ship after one of those.
|
|
143
|
+
|
|
137
144
|
**Source distribution for air-gapped or self-hosted catalogues:**
|
|
138
145
|
|
|
139
146
|
```bash
|
|
@@ -145,7 +152,7 @@ agentbundle catalogue package \
|
|
|
145
152
|
--output dist/
|
|
146
153
|
```
|
|
147
154
|
|
|
148
|
-
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files). Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
155
|
+
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files), with the same build-residue exclusions as the default flavour. Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
149
156
|
|
|
150
157
|
**Org bootstrap — ship the default channel in your fork:**
|
|
151
158
|
|
|
@@ -156,17 +156,51 @@ credentials or private data, prefer synthetic data, stay modest in size, and
|
|
|
156
156
|
name their licence when sourced externally. Fuzzing corpora, generated output,
|
|
157
157
|
coverage reports, and caches are neither committed nor packaged.
|
|
158
158
|
|
|
159
|
+
The packager enforces the second half. It prunes these directory names at every
|
|
160
|
+
level of a pack, and never descends into them:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
__pycache__ .pytest_cache .mypy_cache .ruff_cache .tox
|
|
164
|
+
.hypothesis htmlcov node_modules .venv venv
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
plus `*.pyc`, `*.pyo`, `.DS_Store`, `coverage.xml`, and any `.coverage*` shard.
|
|
168
|
+
A directory you mean to ship must not be named one of those — the drop is
|
|
169
|
+
silent. Note this is matched by name at any depth, so it is deliberately *not*
|
|
170
|
+
the same list as the repository-root exclusions.
|
|
171
|
+
|
|
159
172
|
### Repository-root tests
|
|
160
173
|
|
|
161
174
|
A test concerning one pack stays inside that pack. Behaviour no single pack
|
|
162
175
|
owns — the catalogue system, packaging, shared projection machinery, profiles,
|
|
163
176
|
cross-pack interaction — belongs to the repository, not to a pack.
|
|
164
177
|
|
|
165
|
-
Where that lives is the repository's call. This catalogue
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
178
|
+
Where that lives is the repository's call. This catalogue splits it: behaviour
|
|
179
|
+
that exercises the engine keeps to the engine's own suite
|
|
180
|
+
(`packages/agentbundle/tests/`), while cross-pack *lints* — the ones that read
|
|
181
|
+
every pack's tree and belong to no pack — live with the repository's other
|
|
182
|
+
tooling. Neither is a root `tests/` tree; a catalogue that wants the separate
|
|
183
|
+
tree can add one. Don't create a top-level directory for a single test — the
|
|
184
|
+
ownership rule is what matters, not the path.
|
|
185
|
+
|
|
186
|
+
### One test process per skill
|
|
187
|
+
|
|
188
|
+
Run each skill's suite in its own process. This is a correctness requirement,
|
|
189
|
+
not a performance preference.
|
|
190
|
+
|
|
191
|
+
Skills are independent, so two of them may reasonably ship a `render.py`, and
|
|
192
|
+
their suites may both be called `test_render.py`. Collect them into one pytest
|
|
193
|
+
run and two things break: pytest refuses the duplicate test basenames outright
|
|
194
|
+
(`import file mismatch`), and if it did not, the first `render` module imported
|
|
195
|
+
would serve every suite that expects its own.
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
pytest packs/<pack>/tests/skills/<skill>/ # one invocation per skill
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
An invocation that spans two skill test directories is safe only while their
|
|
202
|
+
basenames happen not to collide — which is a property of today's contents, not
|
|
203
|
+
of the layout. Keep the invocations separate and the question never arises.
|
|
170
204
|
|
|
171
205
|
### Normative summary
|
|
172
206
|
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"guides/_shared/reference/catalogue-authoring-standards.md": "
|
|
3
|
+
"guides/_shared/reference/catalogue-authoring-standards.md": "cec0f7afd7a0bf61d7bedd9facd096b083cb7413679a6fbcd0af28d40bece58c",
|
|
4
4
|
"guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
|
|
5
|
-
"packs/AGENTS.md": "
|
|
5
|
+
"packs/AGENTS.md": "861a029007741cd7645cdfcc018e5ac85cf218d332f6688115156c9c676381b8",
|
|
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",
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md
RENAMED
|
@@ -6,8 +6,9 @@ Read `packs/AGENTS.local.md` when present — it carries host-specific overrides
|
|
|
6
6
|
## Pack layout
|
|
7
7
|
|
|
8
8
|
The pack is the ownership and test-execution boundary; `.apm/` is the runtime export boundary; a skill is the
|
|
9
|
-
evaluation-fixture boundary. Tests go in `packs/<pack>/tests/`, never under `.apm
|
|
10
|
-
`.apm/skills/<skill>/evals/` and project with the skill.
|
|
9
|
+
evaluation-fixture boundary. Tests go in `packs/<pack>/tests/`, never under `.apm/`; evals stay skill-local at
|
|
10
|
+
`.apm/skills/<skill>/evals/` and project with the skill. `tools/lint-pack-test-boundary.py` enforces both across
|
|
11
|
+
every pack, plus one pytest process per skill test dir. Shape: `docs/architecture/pack-layout.md`.
|
|
11
12
|
|
|
12
13
|
| Path | Purpose |
|
|
13
14
|
|------|---------|
|
|
@@ -62,14 +62,60 @@ _REQUIRED_PATHS: tuple[str, ...] = (
|
|
|
62
62
|
)
|
|
63
63
|
|
|
64
64
|
# Implicit denylist — top-level directories always excluded regardless of include.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
# Build residue: never authored, never packaged. Pruned at *every* level of every
|
|
66
|
+
# collection walk, so a cache anywhere under an included root is dropped.
|
|
67
|
+
#
|
|
68
|
+
# This replaces an earlier `_IMPLICIT_DENY_DIRS` that also listed `.git`,
|
|
69
|
+
# `tools`, `packages` and `dist`. That set was referenced nowhere — the archive
|
|
70
|
+
# collected caches for as long as it has existed — and it could not simply be
|
|
71
|
+
# applied as written: those four are *repository-root* names, already excluded
|
|
72
|
+
# because `_DEFAULT_INCLUDE_DIRS` is an allowlist, and pruning them at every
|
|
73
|
+
# level would have silently dropped real content. `packs/monorepo-extras/seeds/packages/`
|
|
74
|
+
# is exactly that case.
|
|
75
|
+
#
|
|
76
|
+
# `catalogue-authoring-standards.md` § 4 tells adopters that caches, coverage
|
|
77
|
+
# output and generated artefacts are "neither committed nor packaged". This is
|
|
78
|
+
# what makes the second half true.
|
|
79
|
+
_TRANSIENT_DIRS: frozenset[str] = frozenset({
|
|
70
80
|
"__pycache__",
|
|
81
|
+
".pytest_cache",
|
|
82
|
+
".mypy_cache",
|
|
83
|
+
".ruff_cache",
|
|
84
|
+
".tox",
|
|
85
|
+
"node_modules",
|
|
86
|
+
".venv",
|
|
87
|
+
"venv",
|
|
88
|
+
"htmlcov",
|
|
89
|
+
".hypothesis",
|
|
71
90
|
})
|
|
72
91
|
|
|
92
|
+
# Same idea, for files that sit beside authored content rather than in a cache
|
|
93
|
+
# directory of their own.
|
|
94
|
+
_TRANSIENT_FILE_SUFFIXES: tuple[str, ...] = (".pyc", ".pyo")
|
|
95
|
+
_TRANSIENT_FILE_NAMES: frozenset[str] = frozenset({".DS_Store", "coverage.xml"})
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _is_transient_file(p: Path) -> bool:
|
|
99
|
+
# `.coverage` by prefix, not equality: `coverage combine` writes shards named
|
|
100
|
+
# `.coverage.<host>.<pid>.<random>`, whose suffix is the random component.
|
|
101
|
+
return (
|
|
102
|
+
p.name in _TRANSIENT_FILE_NAMES
|
|
103
|
+
or p.name.startswith(".coverage")
|
|
104
|
+
or p.suffix in _TRANSIENT_FILE_SUFFIXES
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def _prune(dp: Path, dirnames: list[str]) -> None:
|
|
109
|
+
"""Drop symlinked and build-residue directories from an `os.walk` descent.
|
|
110
|
+
|
|
111
|
+
Mutates `dirnames` in place — that is how `os.walk` is told not to descend.
|
|
112
|
+
"""
|
|
113
|
+
dirnames[:] = [
|
|
114
|
+
dn for dn in dirnames
|
|
115
|
+
if dn not in _TRANSIENT_DIRS and not (dp / dn).is_symlink()
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
|
|
73
119
|
# Path-safety pattern for --bundle/--release/--channel flag values.
|
|
74
120
|
_SAFE_NAME_RE = re.compile(r"^[A-Za-z0-9\-._]+$")
|
|
75
121
|
|
|
@@ -111,17 +157,22 @@ def _scan_content(root: Path, pack_include: list[str] | None = None) -> list[Pat
|
|
|
111
157
|
f"contain path traversal components"
|
|
112
158
|
)
|
|
113
159
|
d = root / entry
|
|
114
|
-
if not d.is_dir():
|
|
160
|
+
if not d.is_dir() or d.is_symlink():
|
|
115
161
|
raise ValueError(
|
|
116
162
|
f"pack_include entry {entry!r} does not exist on disk at {d}"
|
|
117
163
|
)
|
|
164
|
+
if Path(entry).name in _TRANSIENT_DIRS:
|
|
165
|
+
raise ValueError(
|
|
166
|
+
f"pack_include entry {entry!r} names build residue; "
|
|
167
|
+
f"it is never packaged"
|
|
168
|
+
)
|
|
118
169
|
for dirpath, dirnames, filenames in os.walk(str(d), followlinks=False):
|
|
119
170
|
dp = Path(dirpath)
|
|
171
|
+
_prune(dp, dirnames)
|
|
120
172
|
for fname in filenames:
|
|
121
173
|
p = dp / fname
|
|
122
|
-
if p.is_file() and not p.is_symlink():
|
|
174
|
+
if p.is_file() and not p.is_symlink() and not _is_transient_file(p):
|
|
123
175
|
collected.append(p)
|
|
124
|
-
dirnames[:] = [dn for dn in dirnames if not (dp / dn).is_symlink()]
|
|
125
176
|
for dir_parts in _DEFAULT_INCLUDE_DIRS:
|
|
126
177
|
if dir_parts[0] == "packs":
|
|
127
178
|
continue
|
|
@@ -133,15 +184,12 @@ def _scan_content(root: Path, pack_include: list[str] | None = None) -> list[Pat
|
|
|
133
184
|
dp = Path(dirpath)
|
|
134
185
|
for fname in filenames:
|
|
135
186
|
p = dp / fname
|
|
136
|
-
if p.is_file() and not p.is_symlink():
|
|
187
|
+
if p.is_file() and not p.is_symlink() and not _is_transient_file(p):
|
|
137
188
|
collected.append(p)
|
|
189
|
+
_prune(dp, dirnames)
|
|
138
190
|
if is_catalogue_root and dp == d:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if not dn.startswith("_") and not (dp / dn).is_symlink()
|
|
142
|
-
]
|
|
143
|
-
else:
|
|
144
|
-
dirnames[:] = [dn for dn in dirnames if not (dp / dn).is_symlink()]
|
|
191
|
+
# Reserved authoring dirs, at the catalogue root only.
|
|
192
|
+
dirnames[:] = [dn for dn in dirnames if not dn.startswith("_")]
|
|
145
193
|
else:
|
|
146
194
|
for dir_parts in _DEFAULT_INCLUDE_DIRS:
|
|
147
195
|
d = root.joinpath(*dir_parts)
|
|
@@ -152,16 +200,12 @@ def _scan_content(root: Path, pack_include: list[str] | None = None) -> list[Pat
|
|
|
152
200
|
dp = Path(dirpath)
|
|
153
201
|
for fname in filenames:
|
|
154
202
|
p = dp / fname
|
|
155
|
-
if p.is_file() and not p.is_symlink():
|
|
203
|
+
if p.is_file() and not p.is_symlink() and not _is_transient_file(p):
|
|
156
204
|
collected.append(p)
|
|
157
|
-
|
|
205
|
+
_prune(dp, dirnames)
|
|
158
206
|
if is_catalogue_root and dp == d:
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if not dn.startswith("_") and not (dp / dn).is_symlink()
|
|
162
|
-
]
|
|
163
|
-
else:
|
|
164
|
-
dirnames[:] = [dn for dn in dirnames if not (dp / dn).is_symlink()]
|
|
207
|
+
# Reserved authoring dirs, at the catalogue root only.
|
|
208
|
+
dirnames[:] = [dn for dn in dirnames if not dn.startswith("_")]
|
|
165
209
|
|
|
166
210
|
for fname in _DEFAULT_INCLUDE_ROOT_FILES:
|
|
167
211
|
p = root / fname
|
|
@@ -226,17 +270,27 @@ def _validate_content(root: Path, content_paths: list[Path]) -> str | None:
|
|
|
226
270
|
if candidate.exists() and candidate.is_symlink():
|
|
227
271
|
return f"error: symlink not allowed: {candidate}"
|
|
228
272
|
|
|
229
|
-
# 4. Symlink walk inside allowlisted dirs
|
|
273
|
+
# 4. Symlink walk inside allowlisted dirs.
|
|
274
|
+
# Scoped to what the archive actually collects. Build residue is pruned
|
|
275
|
+
# the same way `_scan_content` prunes it — otherwise a real `node_modules`
|
|
276
|
+
# (whose `.bin/` is always symlinks) or a virtualenv aborts packaging for
|
|
277
|
+
# files that were never going to ship.
|
|
230
278
|
for dir_parts in _DEFAULT_INCLUDE_DIRS:
|
|
231
279
|
d = root.joinpath(*dir_parts)
|
|
232
280
|
if not d.is_dir() or d.is_symlink():
|
|
233
281
|
continue
|
|
234
282
|
for dirpath, dirnames, filenames in os.walk(str(d), followlinks=False):
|
|
235
283
|
dp = Path(dirpath)
|
|
284
|
+
# Check *before* pruning: `_prune` drops symlinked directories, and
|
|
285
|
+
# a symlinked directory in authored content is precisely what this
|
|
286
|
+
# step exists to reject. Only build residue is skipped.
|
|
236
287
|
for entry in list(dirnames) + list(filenames):
|
|
237
288
|
full = dp / entry
|
|
289
|
+
if entry in _TRANSIENT_DIRS or _is_transient_file(full):
|
|
290
|
+
continue
|
|
238
291
|
if full.is_symlink():
|
|
239
292
|
return f"error: symlink not allowed: {full}"
|
|
293
|
+
_prune(dp, dirnames)
|
|
240
294
|
|
|
241
295
|
# 5. Hard-link detection (POSIX only)
|
|
242
296
|
for p in content_paths:
|
|
@@ -260,6 +314,8 @@ def _validate_content(root: Path, content_paths: list[Path]) -> str | None:
|
|
|
260
314
|
continue
|
|
261
315
|
if pack_dir.name.startswith("_"):
|
|
262
316
|
continue
|
|
317
|
+
if pack_dir.name in _TRANSIENT_DIRS:
|
|
318
|
+
continue # build residue, not a pack — and not in the archive
|
|
263
319
|
pack_toml_path = pack_dir / "pack.toml"
|
|
264
320
|
try:
|
|
265
321
|
pack_data = load_pack_toml(pack_toml_path)
|
|
@@ -771,10 +827,10 @@ def package_source_flavour(
|
|
|
771
827
|
if d.is_dir() and not d.is_symlink():
|
|
772
828
|
for dirpath, dirnames, filenames in os.walk(str(d), followlinks=False):
|
|
773
829
|
dp = Path(dirpath)
|
|
774
|
-
|
|
830
|
+
_prune(dp, dirnames)
|
|
775
831
|
for fname in filenames:
|
|
776
832
|
fp = dp / fname
|
|
777
|
-
if fp.is_file() and not fp.is_symlink():
|
|
833
|
+
if fp.is_file() and not fp.is_symlink() and not _is_transient_file(fp):
|
|
778
834
|
collected.append(fp)
|
|
779
835
|
|
|
780
836
|
# guides/_shared/
|
|
@@ -782,10 +838,10 @@ def package_source_flavour(
|
|
|
782
838
|
if guides_shared.is_dir() and not guides_shared.is_symlink():
|
|
783
839
|
for dirpath, dirnames, filenames in os.walk(str(guides_shared), followlinks=False):
|
|
784
840
|
dp = Path(dirpath)
|
|
785
|
-
|
|
841
|
+
_prune(dp, dirnames)
|
|
786
842
|
for fname in filenames:
|
|
787
843
|
fp = dp / fname
|
|
788
|
-
if fp.is_file() and not fp.is_symlink():
|
|
844
|
+
if fp.is_file() and not fp.is_symlink() and not _is_transient_file(fp):
|
|
789
845
|
collected.append(fp)
|
|
790
846
|
|
|
791
847
|
# .claude-plugin/marketplace.json
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/self_host_windows.py
RENAMED
|
@@ -84,16 +84,27 @@ def run_windows_compat(root: Path) -> int:
|
|
|
84
84
|
[py, "-m", "pytest", str(root / "packs" / "core" / "tests" / "hooks")],
|
|
85
85
|
root,
|
|
86
86
|
),
|
|
87
|
-
# Atlassian SSO suites (asyncio + SSL-context wiring is platform-sensitive)
|
|
87
|
+
# Atlassian SSO suites (asyncio + SSL-context wiring is platform-sensitive).
|
|
88
|
+
# Pack tests live outside the runtime payload (ADR-0071).
|
|
89
|
+
#
|
|
90
|
+
# Probe the dependencies first. Both trios `importorskip("credbroker")` at
|
|
91
|
+
# module scope, and `_step` below judges a step by its return code alone —
|
|
92
|
+
# so without this, a machine missing credbroker skips both suites entirely
|
|
93
|
+
# and the step reports pass.
|
|
94
|
+
(
|
|
95
|
+
"atlassian SSO dependency probe",
|
|
96
|
+
[py, "-c", "import credbroker, httpx"],
|
|
97
|
+
root,
|
|
98
|
+
),
|
|
88
99
|
(
|
|
89
100
|
"jira SSO suites (atlassian-sso-cookie)",
|
|
90
101
|
[py, "-m", "pytest", "test_sso_config.py", "test_sso_client.py", "test_setup_sso.py"],
|
|
91
|
-
root / "packs" / "atlassian" / "
|
|
102
|
+
root / "packs" / "atlassian" / "tests" / "skills" / "jira",
|
|
92
103
|
),
|
|
93
104
|
(
|
|
94
105
|
"confluence-crawler SSO suites (atlassian-sso-cookie)",
|
|
95
106
|
[py, "-m", "pytest", "test_sso_config.py", "test_sso_client.py", "test_setup_sso.py"],
|
|
96
|
-
root / "packs" / "atlassian" / "
|
|
107
|
+
root / "packs" / "atlassian" / "tests" / "skills" / "confluence-crawler",
|
|
97
108
|
),
|
|
98
109
|
# Experience agnosticism lint (proves `python` portability, not `python3`)
|
|
99
110
|
(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.5
|
|
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
|
|
@@ -156,6 +156,13 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
|
|
|
156
156
|
descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
|
|
157
157
|
produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
|
|
158
158
|
|
|
159
|
+
Build residue is excluded, so it does not matter whether you packaged a working
|
|
160
|
+
tree you had just tested or npm-installed in. Pruned at every level of a pack:
|
|
161
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `.tox`,
|
|
162
|
+
`.hypothesis`, `htmlcov`, `node_modules`, `.venv`, `venv` — plus `*.pyc`,
|
|
163
|
+
`*.pyo`, `.DS_Store`, `coverage.xml` and `.coverage*` shards. The drop is
|
|
164
|
+
silent, so do not name a directory you mean to ship after one of those.
|
|
165
|
+
|
|
159
166
|
**Source distribution for air-gapped or self-hosted catalogues:**
|
|
160
167
|
|
|
161
168
|
```bash
|
|
@@ -167,7 +174,7 @@ agentbundle catalogue package \
|
|
|
167
174
|
--output dist/
|
|
168
175
|
```
|
|
169
176
|
|
|
170
|
-
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files). Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
177
|
+
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files), with the same build-residue exclusions as the default flavour. Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
|
|
171
178
|
|
|
172
179
|
**Org bootstrap — ship the default channel in your fork:**
|
|
173
180
|
|
|
@@ -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.5"
|
|
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
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md
RENAMED
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/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.4 → agentbundle-0.29.5}/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.4 → agentbundle-0.29.5}/agentbundle/build/projections/copilot_hooks_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/gemini_command_toml.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/projections/merge_into_agent_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-agents-md.toml
RENAMED
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-marketplace.toml
RENAMED
|
File without changes
|
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-apm-package.toml
RENAMED
|
File without changes
|
{agentbundle-0.29.4 → agentbundle-0.29.5}/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.4 → agentbundle-0.29.5}/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.4 → agentbundle-0.29.5}/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
|