agentbundle 0.28.0__tar.gz → 0.29.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentbundle-0.28.0 → agentbundle-0.29.0}/PKG-INFO +31 -1
- {agentbundle-0.28.0 → agentbundle-0.29.0}/README-pypi.md +30 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/README.md +8 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/pack.schema.json +16 -2
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/cli.py +5 -4
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/_common.py +6 -2
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/install.py +278 -49
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/list_installed.py +10 -3
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/show.py +12 -6
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/uninstall.py +99 -3
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/config.py +3 -1
- agentbundle-0.29.0/agentbundle/local_exclude.py +375 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/scope.py +18 -1
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/version.py +1 -1
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/workspace_mcp.py +90 -12
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/PKG-INFO +31 -1
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/SOURCES.txt +1 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/pyproject.toml +1 -1
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/__main__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/manifest.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/main.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_claude_code.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_codex.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_copilot.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_cursor.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_gemini.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_kiro.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_build_ships_seeds.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_contract.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_contract_scope.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_contract_v07.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_contract_v08.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_end_to_end_build.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_lint_packs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_pack_schema.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_pipeline.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_projectable_subset.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_projections_merge_json.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_scope_rails.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_security.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_self_host_check.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_shared_libs_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_workspace_status_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/tests/test_writers_emit_lf.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/package.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/categories.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/oplog.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/render.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/safety.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/statelock.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle/user_config.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/setup.cfg +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_linear_primitive.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_loop_engine_events_jsonl.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_mcp_tools.py +0 -0
- {agentbundle-0.28.0 → agentbundle-0.29.0}/tests/test_workspace_status_engine_autonomous.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.29.0
|
|
4
4
|
Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
|
|
5
5
|
Author-email: eugenelim <eugenelim@users.noreply.github.com>
|
|
6
6
|
License: Apache-2.0 OR MIT
|
|
@@ -329,6 +329,36 @@ agentbundle oplog show my-pack # JSONL operation history
|
|
|
329
329
|
agentbundle oplog clear my-pack # wipe history (asks first)
|
|
330
330
|
```
|
|
331
331
|
|
|
332
|
+
## Per-session MCP server (workspace-mcp)
|
|
333
|
+
|
|
334
|
+
The `core` pack ships a per-session MCP server that a control harness can inject into
|
|
335
|
+
each Claude Code session. It exposes six tools over MCP stdio:
|
|
336
|
+
|
|
337
|
+
| Tool | What it does |
|
|
338
|
+
|---|---|
|
|
339
|
+
| `workspace_status` | Returns the queue (ready / blocked / active / shaping items) and active-run state — current phase, whether a gate is pending, and the gate question |
|
|
340
|
+
| `elicit` | Sends a question to the operator and blocks until they respond (300 s timeout) |
|
|
341
|
+
| `git_status` | Returns uncommitted changes (`git status --short`) |
|
|
342
|
+
| `git_branch` | Creates and checks out a feature branch scoped to the dispatched item |
|
|
343
|
+
| `git_commit` | Stages and commits only files under the item's configured output paths |
|
|
344
|
+
| `git_push` | Pushes the session branch to origin |
|
|
345
|
+
|
|
346
|
+
**Spawn it** (the harness does this, not the agent):
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
python3 -m agentbundle.workspace_mcp
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Inject the session instruction** so the agent knows to use the tools:
|
|
353
|
+
|
|
354
|
+
```python
|
|
355
|
+
from agentbundle.workspace_mcp import DEFAULT_SESSION_INSTRUCTION
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Pass `WORKSPACE_MCP_SPEC_PATH` (path to the spec directory) and
|
|
359
|
+
`WORKSPACE_MCP_DISPATCHED_ITEM` (`ini_slug/type:slug`) as environment variables
|
|
360
|
+
when spawning to unlock the git write tools and FSM event tracking.
|
|
361
|
+
|
|
332
362
|
## Credentials
|
|
333
363
|
|
|
334
364
|
`agentbundle` doesn't resolve secrets. Credentialed skills use [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach.
|
|
@@ -307,6 +307,36 @@ agentbundle oplog show my-pack # JSONL operation history
|
|
|
307
307
|
agentbundle oplog clear my-pack # wipe history (asks first)
|
|
308
308
|
```
|
|
309
309
|
|
|
310
|
+
## Per-session MCP server (workspace-mcp)
|
|
311
|
+
|
|
312
|
+
The `core` pack ships a per-session MCP server that a control harness can inject into
|
|
313
|
+
each Claude Code session. It exposes six tools over MCP stdio:
|
|
314
|
+
|
|
315
|
+
| Tool | What it does |
|
|
316
|
+
|---|---|
|
|
317
|
+
| `workspace_status` | Returns the queue (ready / blocked / active / shaping items) and active-run state — current phase, whether a gate is pending, and the gate question |
|
|
318
|
+
| `elicit` | Sends a question to the operator and blocks until they respond (300 s timeout) |
|
|
319
|
+
| `git_status` | Returns uncommitted changes (`git status --short`) |
|
|
320
|
+
| `git_branch` | Creates and checks out a feature branch scoped to the dispatched item |
|
|
321
|
+
| `git_commit` | Stages and commits only files under the item's configured output paths |
|
|
322
|
+
| `git_push` | Pushes the session branch to origin |
|
|
323
|
+
|
|
324
|
+
**Spawn it** (the harness does this, not the agent):
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
python3 -m agentbundle.workspace_mcp
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Inject the session instruction** so the agent knows to use the tools:
|
|
331
|
+
|
|
332
|
+
```python
|
|
333
|
+
from agentbundle.workspace_mcp import DEFAULT_SESSION_INSTRUCTION
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Pass `WORKSPACE_MCP_SPEC_PATH` (path to the spec directory) and
|
|
337
|
+
`WORKSPACE_MCP_DISPATCHED_ITEM` (`ini_slug/type:slug`) as environment variables
|
|
338
|
+
when spawning to unlock the git write tools and FSM event tracking.
|
|
339
|
+
|
|
310
340
|
## Credentials
|
|
311
341
|
|
|
312
342
|
`agentbundle` doesn't resolve secrets. Credentialed skills use [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach.
|
|
@@ -26,6 +26,14 @@ agentbundle install --pack desk-research --scope user
|
|
|
26
26
|
|
|
27
27
|
User-scope packs land in your home directory, not the repo — they're yours, not the team's, and they're there in every project you open.
|
|
28
28
|
|
|
29
|
+
**Try a pack without committing anything** — so the pack is fully live for your session but completely invisible to git:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
agentbundle install --pack core --scope local
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Local-scope packs land at the same paths as a repo install, but every file is registered in `.git/info/exclude` — so `git status` stays clean and nothing gets accidentally committed. Uninstall removes both the files and the exclude entries; the repo returns to exactly the state it was in before. Requires a git working tree. Useful for trialling a pack in a repo you don't own, or testing an update before rolling it out to the team.
|
|
36
|
+
|
|
29
37
|
The install auto-detects your agent (`--adapter` overrides). Multi-IDE? Install the same pack for each agent at the same scope — they coexist, and the agents that read `.agents/skills/` (codex, cursor, gemini, copilot) share one skill copy instead of fighting over it. To install from a **different** catalogue, pass it as a trailing argument — a git URL or a local path (`agentbundle install --pack core <catalogue>`); a `config set source <catalogue>` makes that the default, and an editable clone (`pip install -e`) defaults to itself.
|
|
30
38
|
|
|
31
39
|
## More commands
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"allowed-scopes": {
|
|
76
76
|
"type": "array",
|
|
77
77
|
"minItems": 1,
|
|
78
|
-
"items": {"enum": ["repo", "user"]}
|
|
78
|
+
"items": {"enum": ["repo", "user", "local"]}
|
|
79
79
|
},
|
|
80
80
|
"user-scope-hooks": {"type": "boolean"},
|
|
81
81
|
"allowed-adapters": {
|
|
@@ -98,7 +98,21 @@
|
|
|
98
98
|
"properties": {
|
|
99
99
|
"allowed-scopes": {"contains": {"enum": ["repo"]}}
|
|
100
100
|
}
|
|
101
|
-
}
|
|
101
|
+
},
|
|
102
|
+
"allOf": [
|
|
103
|
+
{
|
|
104
|
+
"if": {
|
|
105
|
+
"properties": {
|
|
106
|
+
"allowed-scopes": {"contains": {"enum": ["local"]}}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"then": {
|
|
110
|
+
"properties": {
|
|
111
|
+
"allowed-scopes": {"contains": {"enum": ["repo"]}}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
102
116
|
},
|
|
103
117
|
"evals": {
|
|
104
118
|
"type": "object",
|
|
@@ -33,6 +33,7 @@ import re
|
|
|
33
33
|
import sys
|
|
34
34
|
from typing import Sequence
|
|
35
35
|
|
|
36
|
+
from agentbundle.scope import LEGAL_SCOPES
|
|
36
37
|
from agentbundle.version import CLI_VERSION, SPEC_VERSION
|
|
37
38
|
|
|
38
39
|
# Path-bearing argparse-attribute names. The set is curated rather than
|
|
@@ -258,8 +259,8 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
258
259
|
sp.add_argument("--root", default=".")
|
|
259
260
|
sp.add_argument(
|
|
260
261
|
"--scope",
|
|
261
|
-
choices=(
|
|
262
|
-
help="Limit the listing to one scope. Default:
|
|
262
|
+
choices=tuple(sorted(LEGAL_SCOPES)),
|
|
263
|
+
help="Limit the listing to one scope. Default: all scopes (repo, user, local).",
|
|
263
264
|
)
|
|
264
265
|
sp.add_argument(
|
|
265
266
|
"--no-check",
|
|
@@ -387,7 +388,7 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
387
388
|
),
|
|
388
389
|
)
|
|
389
390
|
sp.add_argument("--output", default=".")
|
|
390
|
-
sp.add_argument("--scope", choices=(
|
|
391
|
+
sp.add_argument("--scope", choices=tuple(sorted(LEGAL_SCOPES)))
|
|
391
392
|
sp.add_argument(
|
|
392
393
|
"--force",
|
|
393
394
|
action="store_true",
|
|
@@ -627,7 +628,7 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
627
628
|
)
|
|
628
629
|
sp.add_argument("--pack", required=True)
|
|
629
630
|
sp.add_argument("--root", default=".")
|
|
630
|
-
sp.add_argument("--scope", choices=(
|
|
631
|
+
sp.add_argument("--scope", choices=tuple(sorted(LEGAL_SCOPES)))
|
|
631
632
|
sp.add_argument(
|
|
632
633
|
"--adapter",
|
|
633
634
|
choices=_shipped_adapters_choices(),
|
|
@@ -43,11 +43,15 @@ def resolve_catalogue_uri(args: argparse.Namespace) -> str:
|
|
|
43
43
|
def resolve_state_path(scope: str, root: Path) -> Path:
|
|
44
44
|
"""Return the state-file path for *scope* under *root*.
|
|
45
45
|
|
|
46
|
-
``scope="repo"``
|
|
47
|
-
``scope="user"``
|
|
46
|
+
``scope="repo"`` → ``<root>/.agentbundle-state.toml``
|
|
47
|
+
``scope="user"`` → ``<root>/.agentbundle/state.toml``
|
|
48
|
+
``scope="local"`` → ``<root>/.agentbundle-local-state.toml``
|
|
49
|
+
(RFC-0080: per-clone, never-committed; never added to .gitignore)
|
|
48
50
|
"""
|
|
49
51
|
if scope == "user":
|
|
50
52
|
return root / ".agentbundle" / "state.toml"
|
|
53
|
+
if scope == "local":
|
|
54
|
+
return root / ".agentbundle-local-state.toml"
|
|
51
55
|
return root / ".agentbundle-state.toml"
|
|
52
56
|
|
|
53
57
|
|