agentbundle 0.58.0__tar.gz → 0.58.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentbundle-0.58.0/agentbundle.egg-info → agentbundle-0.58.1}/PKG-INFO +9 -1
- {agentbundle-0.58.0 → agentbundle-0.58.1}/README-pypi.md +8 -0
- agentbundle-0.58.1/agentbundle/_data/_content_safety.py +419 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/workspace_status_engine.py +502 -41
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/self_host.py +8 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/version.py +1 -1
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/workspace_mcp.py +286 -7
- {agentbundle-0.58.0 → agentbundle-0.58.1/agentbundle.egg-info}/PKG-INFO +9 -1
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle.egg-info/SOURCES.txt +3 -1
- {agentbundle-0.58.0 → agentbundle-0.58.1}/pyproject.toml +1 -1
- agentbundle-0.58.1/tests/unit/test_workspace_mcp_supervisor_run.py +661 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/MANIFEST.in +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/__main__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/agent-plugin-extension-namespaces.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/agent-plugin-extension-namespaces.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-index.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-manifest.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-members.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/manifest.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/CLAUDE.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/_example/.apm/skills/example-skill/evals/eval_queries.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/profiles/CLAUDE.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_gemini_admissibility.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_layout_declared_section.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_pack_metadata.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue-scaffold/tests/conformance/test_shared_library_boundaries.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/close_work.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/cooling.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/distribution-routes.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/distribution-routes.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/file_safety.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/knowledge-captured-observation.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/marketplace-entry.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/public-contracts.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/vendor/agent-plugins/1.0.0/LICENSE.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/vendor/agent-plugins/1.0.0/PROVENANCE.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/vendor/agent-plugins/1.0.0/mcp.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/vendor/agent-plugins/1.0.0/plugin.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/work_intake_refresh.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/_data/workspace_status_prune.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/bounded_metadata.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/_sweep_guard.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/hook_wiring_rules.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/main.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projection_io.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/plugin_hooks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/per-pack-agent-plugin.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/route_agent_plugin.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/route_apm.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/route_claude_plugins.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/route_lookup.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_fetch/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_fetch/direct_http.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_fetch/jfrog_cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_fetch/models.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/contracts_inspector.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/file_safety.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/index_generator.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/journey_validator.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/manifest.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/okf_discovery.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/package.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/catalogue_tooling/version_ranges.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/categories.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_contracts.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_index.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_sync.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/direct_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/direct_source.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/direct_source_acquisition.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/direct_source_state.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/direct_validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/oplog.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/pack_renames.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/render.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/safety.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/statelock.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/system_trust.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle/user_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/conftest.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/setup.cfg +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/templates/install-marker.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/_direct_acquisition.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/_rename_fixtures.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/_support.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/claude-code-2.1.226-hook-events.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/claude-code-2.1.228-hook-events.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/agents/bar.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/commands/qux.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/baz.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/hook-wiring/qux.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/hooks/baz.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/core/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/governance-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/governance-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/governance-extras/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/monorepo-extras/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/monorepo-extras/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/monorepo-extras/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/product-documentation/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/product-documentation/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/product-documentation/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/packs/user-guide-diataxis/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/fixtures/recipes/bogus-target.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_claude_code.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_codex.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_copilot.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_cursor.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_gemini.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_kiro.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_agent_boundary_metadata_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_agent_plugin_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_build_ships_seeds.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_build_validate_bundled_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_contract_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_contract_v07.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_contract_v08.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_distribution_route_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_distribution_route_golden.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_distribution_route_resolution.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_end_to_end_build.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_hook_wiring_rules.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_lint_packs.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_pack_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_pack_schema_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_pipeline.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_plugin_hooks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_plugin_publication_gates.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_policy_registry_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_projectable_subset.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_projection_io.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_projections_merge_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_route_lookup.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_scope_rails.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_security.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_self_host_check.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_self_host_metadata_policy.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_sequential_implementer_dispatch_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_shared_libs_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_user_libs_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/build_pipeline/test_writers_emit_lf.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/conftest.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/contracts/test_agentbundle_show_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/contracts/test_catalogue_fetch_credential_boundary.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/contracts/test_skill_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/adapt/.adapt-discovery.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/adapt/values.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/catalogue.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/.gitkeep +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/_example/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/_example/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/_example/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/_example/evals/eval_queries.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/packs/_example/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/profiles/.gitkeep +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/profiles/_example/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/blank_catalogue/profiles/_example/profile.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield/values.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/AGENTS.upstream.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/DESIGN.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/EXPECTED_TREE.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/docs/CHARTER.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/docs/guides/how-to/index.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt/docs/howto/getting-started.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt-expected/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt-expected/docs/CHARTER.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/.adapt-discovery.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/brownfield-adapt-user-home/.agentbundle/state.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_sync/adapter_contract_major_mismatch/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/catalogue.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/hook-wiring/example.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/.apm/skills/example-skill/scripts/run.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/JOURNEY.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-with-journey/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/packs/pack-without-journey/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/catalogue_wave4/profiles/test-profile.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/cognitive-load-hosts.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag/scripts/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag-derived/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag-derived/scripts/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag-normalised/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/argv-flag-normalised/scripts/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/conforming/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/conforming/scripts/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/dotfile-grep/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/dotfile-grep/scripts/leak.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/dotfile-with-optout/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/dotfile-with-optout/scripts/legit.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/mcp-server-headers/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/mcp-server-headers/scripts/cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/creds/skills/missing-dont-block/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/direct/ac35_corpus_verdicts.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/direct/golden_state_0_5.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/distribution-routes/golden.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/distribution-routes/witness-packs/portable/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/distribution-routes/witness-packs/portable/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/.claude-plugin/marketplace.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/LICENSE-APACHE +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/LICENSE-MIT +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/catalogue.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/alpha/seeds/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/beta/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/external_catalogue/profiles/example.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.apm/agents/helper.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.apm/commands/cmd.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.apm/hook-wiring/run.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.apm/hooks/run.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.apm/skills/example/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/install/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/kiro_ide_hook/ask_agent_basic.kiro.hook +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/kiro_ide_hook/run_command_with_placeholder.kiro.hook +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/lint_packs/clean/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/lint_packs/clean/seeds/README.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/list-installed/golden_120col.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/list-installed/golden_80col.txt +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/list_packs/catalogue/packs/alpha/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/list_packs/catalogue/packs/beta/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/.apm/skills/local-test/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/local_scope/catalogue/packs/local-test-pack/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/cc-user-hooks/.apm/hook-wiring/on-prompt.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/cc-user-hooks/.apm/hooks/on-prompt.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/cc-user-hooks/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-repo-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-repo-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-repo-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-repo-hooks/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-user-hooks/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-user-hooks/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-user-hooks/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/kiro-user-hooks/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-missing-attach/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-missing-attach/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-pascal-events/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-pascal-events/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hook-wiring/on-spawn.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-unknown-agent/.apm/hooks/on-spawn.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/packs/malformed-kiro-unknown-agent/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/scaffold/test-pack/seeds/AGENTS.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/scaffold/test-pack/seeds/_agents-footer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/scaffold/test-pack/seeds/docs/CHARTER.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/show_contract/agentbundle-show.schema.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/show_contract/catalogue.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/show_contract/installed_state.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v1/packs/core/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v2/packs/core/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/agents/reviewer.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/commands/deploy.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hook-wiring/pre-commit.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/hooks/pre-commit.sh +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.apm/skills/work-loop/SKILL.md +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/.claude-plugin/plugin.json +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/upgrade/catalogue_v3/packs/core/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/validate/bad_recipe_pack/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/validate/malformed_pack/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/validate/valid_pack/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/fixtures/validate/version_mismatch_pack/pack.toml +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/_https_archive.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_adapt_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_adapt_dual_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_adapt_preflight_detection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_adapt_schema_migration.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_apm_install_route.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_blank_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_brownfield_adapt_end_to_end.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_brownfield_round_trip.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_brownfield_user_home_fixture.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_build_check_drift_gates.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_build_derivation_apm.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_build_derivation_claude_plugins.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_bundled_contracts_fail_closed.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_init.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_init_packageable.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_adapter_compat.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_dependencies.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_external_portability.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_fixture_checks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_marketplace.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_output_drift.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_package_preflight.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_plugin_path.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_profile_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_verify_step1.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_wave4_index_generator.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_wave4_integration.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_wave4_journey_validator.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_catalogue_wave4_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_cc_user_hooks_fixture.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_claude_plugins_install_route.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_config_cascade.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_credential_brokers_pack_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_credentials_wheel.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_direct_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_discovery_schema_cross_consumer.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_editable_source_detection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_fixtures_validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_hook_wiring_ingress.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_adapt_chain.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_converters_user_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_copilot_full_parity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_core_smoke.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_default_source.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_dependencies_gate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_dual_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_layout_is_best_effort.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_orphan_reshape.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_pack_metadata_shape.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_profile.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_profile_live.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_repo_scope_per_adapter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_research_user_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_seed_delivery.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_session_start_wiring.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_upgrade_offer.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_user_hooks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_install_user_scope_allowed_adapters.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_jfrog_cli_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_kiro_ide_hook_e2e.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_kiro_repo_hooks_fixture.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_kiro_user_hooks_fixture.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_list_packs_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_local_scope_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_marketplace_entry_validation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_marketplace_manifest_regression.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_multi_pack_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_orphan_cleanup_respects_foreign_state.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_plugin_route_membership.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_portable_catalogue_authentication.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_recommends_cross_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_reconcile.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_rename_hint_cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_rename_migration_e2e.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_reserved_path_filter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_scaffold_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_self_host_schema_migration.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_self_host_sweep_respects_state.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_shared_prefix_coexistence.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_show_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_tier_invariants.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_trust_fallback_tls.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_uninstall_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_uninstall_user_hooks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_upgrade_attach_to_agent.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_upgrade_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_upgrade_user_hooks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_version_gate_matrix.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_workspace_mcp_git_fsm.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/integration/test_zipapp.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/performance/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/performance/test_direct_family2_budget_cost.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_depends_on.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_git_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_layout_override.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/test_workspace_mcp_tools.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/__init__.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/conftest.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_adapt_discovery_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_adapter_symlink_policy.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_append_layout_section.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_architect_readme_install_command.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_bundled_contract_errors.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_archive_unit_digests.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_ci_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_curation_deps.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_fetch.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_fetch_jfrog.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_init_cli_self_hosted.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_manifest_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_pack_defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_package_compare.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_package_include_diagnostic.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_package_refusal.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_self_hosted_export_removal.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_skill_spec_lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_spec_version.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_sync.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_sync_fixture_set.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_archive.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_build.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_file_safety.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_foundation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_identity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_init.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_lint.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_package.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_self_host.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_self_hosted_init.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_source_package.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_tooling_verify.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_trust_fallback.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_unit_digests.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave2_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave2_validation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave3_contracts_cli.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave3_contracts_inspector.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave3_init_nextsteps.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_catalogue_wave3_offline_navigation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_catalogue_optional.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_help_lists_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_list_targets_help.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_namespace_fixture.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_path_normalisation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_profile_surface.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cli_scope_flags.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_codex_agent_toml.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_codex_projection_modes.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_cognitive_load_seed_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_collect_tree_symlinks.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_common_classify_seeds.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_config_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_configured_adapter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_confirm_helper.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_contract_parity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_contract_v0_3_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_copilot_agent_md.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_copilot_hooks_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_copilot_user_scope_wiring.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_credbroker_lint_hardening.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_dependencies_batch.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_diff_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_admission.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_architecture_controls.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_diagnostics.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_lifecycle_facts.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_source_acquisition.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_source_state.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_upgrade.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_direct_validate.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_footprint_ownership.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_https_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_init_state_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_argparse_adapter_flag.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_argparse_emit_install_routes.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_defaults_preferred_adapter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_dropped_primitives_warning.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_event_dropped_wirings.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_first_value_handoff.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_force_help.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_inband_detection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_messages.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_messages_repo_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_refusal_ordering.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_install_state_provenance.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_kiro_ide_hook_projection.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_kiro_ide_hook_rail.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_kiro_ide_hook_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_layout_bases_anchoring.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_lint_agent_artifacts_metadata_auth.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_list_installed_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_list_installed_status.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_list_targets_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_exclude_git_cache.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t10_uninstall.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t12_show.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t2_resolve.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t3_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t4_state_path.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t5_list_installed.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t7_install_gates.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t8_install.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_local_scope_t9_exclude.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_marker_schema_version_parity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_merge_into_agent_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_multi_adapter_disambiguator.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_nested_symlink_hardening.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_no_contracts_fallback.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_offer_upgrade_namespace.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_okf_discovery.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_org_bootstrap.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_orphan_sweep_guards.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pack_config_api.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pack_evals_bundled_contract.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pack_inventory.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pack_layout_section_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pack_renames.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_package_catalogue.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_packstate_source_provenance.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_pipeline_phase_order.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_plugin_scope_filter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_profile_reader.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_render.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_render_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_render_table.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_resolve_state_path.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_resolve_target_adapter_user_config.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_resolve_user_scope_target_adapter.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_route_surface_parity.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_safety.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_safety_repo_scope_prefixes.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_safety_scan_per_pack_scoping.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_scaffold_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_scope.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_self_host_windows.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_shared_prefix_disclosure.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_source_conflict_guard.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_source_defaults.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_state_v01_refuse_write.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_state_v02.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_state_v0_4_schema.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_statelock.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_statelock_hardening.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_system_trust.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_target_resolver.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_toml_emitters.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_unresolved_markers.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_upgrade_bulk_all.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_upgrade_recap.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_upgrade_source_inference.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_user_config_io.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_user_config_isolation.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_user_config_path.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_user_config_source.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_user_merge_json.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_validate_attach_to_agent.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_validate_categories.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_validate_cmd.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_validate_hook_wiring_per_file_compatibility.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_values_from_shapes.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_version.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_windows_direct_suite_registration.py +0 -0
- {agentbundle-0.58.0 → agentbundle-0.58.1}/tests/unit/test_workspace_mcp_events_poller.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.58.
|
|
3
|
+
Version: 0.58.1
|
|
4
4
|
Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
|
|
5
5
|
Author-email: eugenelim <eugenelim@users.noreply.github.com>
|
|
6
6
|
License-Expression: Apache-2.0 OR MIT
|
|
@@ -35,6 +35,14 @@ python -m pip install agentbundle
|
|
|
35
35
|
|
|
36
36
|
Requires Python 3.11+. Runs on macOS, Linux, and Windows.
|
|
37
37
|
|
|
38
|
+
## What's new in 0.58.1
|
|
39
|
+
|
|
40
|
+
The workspace MCP bridge understands supervisor runs. While a spec has a
|
|
41
|
+
supervisor status file, `workspace_status` shows that run's id, stage, and
|
|
42
|
+
`run_active` signal. A pending human question appears only as framed untrusted
|
|
43
|
+
text that has passed a content-safety check, or as a fixed placeholder. A
|
|
44
|
+
status file that is a link, oversized, or malformed shows no run and no gate.
|
|
45
|
+
|
|
38
46
|
## What's new in 0.58.0
|
|
39
47
|
|
|
40
48
|
The shared file-safety helper gains `write_confined_regular_file`, which creates
|
|
@@ -14,6 +14,14 @@ python -m pip install agentbundle
|
|
|
14
14
|
|
|
15
15
|
Requires Python 3.11+. Runs on macOS, Linux, and Windows.
|
|
16
16
|
|
|
17
|
+
## What's new in 0.58.1
|
|
18
|
+
|
|
19
|
+
The workspace MCP bridge understands supervisor runs. While a spec has a
|
|
20
|
+
supervisor status file, `workspace_status` shows that run's id, stage, and
|
|
21
|
+
`run_active` signal. A pending human question appears only as framed untrusted
|
|
22
|
+
text that has passed a content-safety check, or as a fixed placeholder. A
|
|
23
|
+
status file that is a link, oversized, or malformed shows no run and no gate.
|
|
24
|
+
|
|
17
25
|
## What's new in 0.58.0
|
|
18
26
|
|
|
19
27
|
The shared file-safety helper gains `write_confined_regular_file`, which creates
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
"""_content_safety — content-safety guard for durable semantic writer boundaries.
|
|
2
|
+
|
|
3
|
+
Accepts a named profile and payload bytes; returns a typed ContentSafetyDecision
|
|
4
|
+
without persisting anything. Standard library only.
|
|
5
|
+
|
|
6
|
+
Every durable semantic writer and replay boundary is registered in
|
|
7
|
+
SLICE_1_WRITER_BOUNDARIES before use; a missing or unknown profile refuses
|
|
8
|
+
without persisting payload bytes. The registered writer boundary table names
|
|
9
|
+
the same set and the same profiles.
|
|
10
|
+
|
|
11
|
+
Rejected payload bytes, excerpts, and content-derived hashes never leave this
|
|
12
|
+
module; accepted free text is returned as typed UntrustedData for consumers.
|
|
13
|
+
The inert wrapper signals that the value must not be concatenated into system
|
|
14
|
+
instructions, commands, tool calls, paths, approvals, or authority.
|
|
15
|
+
|
|
16
|
+
Classification vocabulary (content-safety-policy.v1):
|
|
17
|
+
public, repository-internal — may persist as bounded Git text
|
|
18
|
+
restricted — requires a controlled reference; cannot persist
|
|
19
|
+
credential, personal — rejected immediately; producer-declared guard
|
|
20
|
+
unknown — rejected as unknown-class
|
|
21
|
+
|
|
22
|
+
Python 3.11+ standard library only. No third-party imports, no packaging, no
|
|
23
|
+
installation.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
import hashlib
|
|
27
|
+
import re
|
|
28
|
+
from dataclasses import dataclass
|
|
29
|
+
from typing import ClassVar, Final
|
|
30
|
+
|
|
31
|
+
__all__ = [
|
|
32
|
+
"ContentSafetyDecision",
|
|
33
|
+
"UntrustedData",
|
|
34
|
+
"POLICY_VERSION",
|
|
35
|
+
"BOUNDARY_PROFILES",
|
|
36
|
+
"SLICE_1_WRITER_BOUNDARIES",
|
|
37
|
+
"check_content_safety",
|
|
38
|
+
"wrap_as_untrusted",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
# ── Policy identity ──────────────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
# Stable version identifier for this policy, matching content-safety-policy.v1.
|
|
44
|
+
POLICY_VERSION: Final[str] = "slice-1.v1"
|
|
45
|
+
|
|
46
|
+
# ── Boundary profile definitions ─────────────────────────────────────────────
|
|
47
|
+
#
|
|
48
|
+
# Per-profile size and shape limits for each content-safety boundary profile.
|
|
49
|
+
# Keys: profile names used in the semantic boundary and writer boundary tables.
|
|
50
|
+
# Every key in SLICE_1_WRITER_BOUNDARIES must map to a key here.
|
|
51
|
+
BOUNDARY_PROFILES: Final[dict[str, dict]] = {
|
|
52
|
+
# 64 KiB: allowlisted identifiers, enums, digests, numbers, repo-relative paths
|
|
53
|
+
"structured-control": {
|
|
54
|
+
"max_bytes": 64 * 1024,
|
|
55
|
+
},
|
|
56
|
+
# 64 KiB: embedded evidence; raw output is a controlled reference, never embedded
|
|
57
|
+
"evidence-embedded-record": {
|
|
58
|
+
"max_bytes": 64 * 1024,
|
|
59
|
+
},
|
|
60
|
+
# 1 MiB total, 64 KiB per free-text field: natural prose is UntrustedData
|
|
61
|
+
"review-report": {
|
|
62
|
+
"max_total_bytes": 1 * 1024 * 1024,
|
|
63
|
+
"max_free_text_bytes": 64 * 1024,
|
|
64
|
+
},
|
|
65
|
+
# 256 KiB, 1 000 conflict paths: paths are repository-relative and classified
|
|
66
|
+
"integration-diagnostic": {
|
|
67
|
+
"max_bytes": 256 * 1024,
|
|
68
|
+
},
|
|
69
|
+
# 64 KiB: raw transcripts and unbounded tool output reject
|
|
70
|
+
"knowledge-observation": {
|
|
71
|
+
"max_bytes": 64 * 1024,
|
|
72
|
+
},
|
|
73
|
+
# Existing result byte cap: uses admission and scanner policy
|
|
74
|
+
"product-addition": {},
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
# ── Writer boundary registry ──────────────────────────────────────────────────
|
|
78
|
+
#
|
|
79
|
+
# The SINGLE declared registry that every durable semantic writer and replay
|
|
80
|
+
# boundary must use. A writer that bypasses this registry or uses a profile
|
|
81
|
+
# other than the one assigned here violates the content-safety contract.
|
|
82
|
+
#
|
|
83
|
+
# The registered writer boundary table names this same set and these same
|
|
84
|
+
# profiles. The roster test asserts both agree.
|
|
85
|
+
#
|
|
86
|
+
# Policy-import writers: initial-plan-review.v1, approval-record.v1, reviewed-execution-envelope.v1
|
|
87
|
+
# Evidence-store writers: semantic-evidence-transaction.v1 (frame), evidence-receipt.v1,
|
|
88
|
+
# evidence-supersession.v1
|
|
89
|
+
# Security-event writer: security-event.v1
|
|
90
|
+
# Shadow facade writers: delivery-subject.v1, acceptance-property.v1,
|
|
91
|
+
# acceptance-verdict.v1
|
|
92
|
+
SLICE_1_WRITER_BOUNDARIES: Final[dict[str, str]] = {
|
|
93
|
+
"initial-plan-review.v1": "structured-control",
|
|
94
|
+
"approval-record.v1": "structured-control",
|
|
95
|
+
"reviewed-execution-envelope.v1": "structured-control",
|
|
96
|
+
"security-event.v1": "structured-control",
|
|
97
|
+
"semantic-evidence-transaction.v1": "structured-control",
|
|
98
|
+
"evidence-receipt.v1": "evidence-embedded-record",
|
|
99
|
+
"evidence-supersession.v1": "evidence-embedded-record",
|
|
100
|
+
"delivery-subject.v1": "structured-control",
|
|
101
|
+
"acceptance-property.v1": "structured-control",
|
|
102
|
+
"acceptance-verdict.v1": "structured-control",
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
# ── Classification vocabulary ─────────────────────────────────────────────────
|
|
106
|
+
|
|
107
|
+
# Only these two classes may persist as bounded Git text.
|
|
108
|
+
_PERSISTABLE_CLASSES: Final[frozenset[str]] = frozenset(
|
|
109
|
+
{"public", "repository-internal"}
|
|
110
|
+
)
|
|
111
|
+
_CREDENTIAL_CLASS: Final[str] = "credential"
|
|
112
|
+
_PERSONAL_CLASS: Final[str] = "personal"
|
|
113
|
+
|
|
114
|
+
# ── C0 control-character scanner ─────────────────────────────────────────────
|
|
115
|
+
#
|
|
116
|
+
# Rejects C0 control characters (0x00–0x1F) and DEL (0x7F), except:
|
|
117
|
+
# HT (0x09), LF (0x0A), CR (0x0D) — valid whitespace in text content.
|
|
118
|
+
# ESC and other C0 survivors are dangerous in terminal-captured streams.
|
|
119
|
+
_CONTROL_RE: Final[re.Pattern[str]] = re.compile(
|
|
120
|
+
r"[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]"
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
# ── Credential scanner patterns ───────────────────────────────────────────────
|
|
124
|
+
#
|
|
125
|
+
# High-confidence token shapes from the required scanner corpus.
|
|
126
|
+
# Matching any pattern returns rejected-credential without payload retention.
|
|
127
|
+
_CREDENTIAL_PATTERNS: Final[list[re.Pattern[str]]] = [
|
|
128
|
+
# GitHub personal access tokens (classic 40-char suffix form)
|
|
129
|
+
re.compile(r"ghp_[A-Za-z0-9]{36,}"),
|
|
130
|
+
# GitHub fine-grained PATs
|
|
131
|
+
re.compile(r"github_pat_[A-Za-z0-9_]{76,}"),
|
|
132
|
+
# AWS access key IDs
|
|
133
|
+
re.compile(r"AKIA[0-9A-Z]{16}"),
|
|
134
|
+
# Generic high-entropy API/secret/access-token assignments (case-insensitive)
|
|
135
|
+
re.compile(r"(?i)api[-_]?key\s*[:=]\s*[A-Za-z0-9/+_.\-]{20,}"),
|
|
136
|
+
re.compile(r"(?i)secret[-_]?key\s*[:=]\s*[A-Za-z0-9/+_.\-]{20,}"),
|
|
137
|
+
re.compile(r"(?i)access[-_]?token\s*[:=]\s*[A-Za-z0-9/+_.\-]{20,}"),
|
|
138
|
+
]
|
|
139
|
+
|
|
140
|
+
# ── Personal-data scanner patterns ────────────────────────────────────────────
|
|
141
|
+
#
|
|
142
|
+
# Direct personal identifiers from the required scanner corpus.
|
|
143
|
+
# Matching any pattern returns rejected-personal-data without payload retention.
|
|
144
|
+
_PERSONAL_DATA_PATTERNS: Final[list[re.Pattern[str]]] = [
|
|
145
|
+
# Email addresses (any domain)
|
|
146
|
+
re.compile(r"[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}"),
|
|
147
|
+
# US Social Security Numbers
|
|
148
|
+
re.compile(r"\b\d{3}-\d{2}-\d{4}\b"),
|
|
149
|
+
# US phone numbers (various formats)
|
|
150
|
+
re.compile(r"\b(?:\+1[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4}\b"),
|
|
151
|
+
]
|
|
152
|
+
|
|
153
|
+
# ── Executable-structure scanner patterns ─────────────────────────────────────
|
|
154
|
+
#
|
|
155
|
+
# Tool-call objects, shell shebangs, and authority-shaped fields that must not
|
|
156
|
+
# persist in any semantic record. These form executable or capability-granting
|
|
157
|
+
# structures in the content stream.
|
|
158
|
+
_EXECUTABLE_PATTERNS: Final[list[re.Pattern[str]]] = [
|
|
159
|
+
# Agentic tool-call object patterns (common in LLM APIs)
|
|
160
|
+
re.compile(r'"tool_call[s]?"\s*:', re.IGNORECASE),
|
|
161
|
+
re.compile(r'"type"\s*:\s*"tool_use"', re.IGNORECASE),
|
|
162
|
+
re.compile(r'"function"\s*:\s*\{[^}]*"name"\s*:', re.IGNORECASE),
|
|
163
|
+
# Shell shebangs — interpreter invocations that must not appear in records
|
|
164
|
+
re.compile(r"^#!(?:/usr)?/(?:bin|env)\b"),
|
|
165
|
+
# Authority-shaped fields — unknown capability grants or privilege escalations
|
|
166
|
+
re.compile(r'"_(?:grant|authority|sudo|root|admin|capability)\b', re.IGNORECASE),
|
|
167
|
+
# Embedded script/frame tags
|
|
168
|
+
re.compile(r"<(?:script|iframe|object|embed)\b", re.IGNORECASE),
|
|
169
|
+
]
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
# ── Decision dataclass ────────────────────────────────────────────────────────
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@dataclass(frozen=True)
|
|
176
|
+
class ContentSafetyDecision:
|
|
177
|
+
"""Typed content-safety decision returned by check_content_safety.
|
|
178
|
+
|
|
179
|
+
Maps to content-safety-decision.v1 schema fields.
|
|
180
|
+
|
|
181
|
+
Invariant: rejected decisions carry NO payload bytes, excerpts, or
|
|
182
|
+
content-derived hashes. Only ``accepted`` carries normalized_record_digest.
|
|
183
|
+
The dataclass raises ValueError if either half of the invariant is violated,
|
|
184
|
+
so any code that constructs a decision with a digest on rejection is caught
|
|
185
|
+
at construction time rather than silently leaking.
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
source_record_id: str
|
|
189
|
+
policy_version: str
|
|
190
|
+
profile: str
|
|
191
|
+
decision_code: str
|
|
192
|
+
# Present only when decision_code == "accepted". Absent on any rejection.
|
|
193
|
+
normalized_record_digest: str | None = None
|
|
194
|
+
|
|
195
|
+
def __post_init__(self) -> None:
|
|
196
|
+
if self.decision_code != "accepted" and self.normalized_record_digest is not None:
|
|
197
|
+
raise ValueError(
|
|
198
|
+
"ContentSafetyDecision: rejected decision must not carry "
|
|
199
|
+
f"normalized_record_digest (decision_code={self.decision_code!r})"
|
|
200
|
+
)
|
|
201
|
+
if self.decision_code == "accepted" and self.normalized_record_digest is None:
|
|
202
|
+
raise ValueError(
|
|
203
|
+
"ContentSafetyDecision: accepted decision must carry "
|
|
204
|
+
"normalized_record_digest"
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def accepted(self) -> bool:
|
|
209
|
+
"""True iff decision_code is 'accepted'."""
|
|
210
|
+
return self.decision_code == "accepted"
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
# ── UntrustedData wrapper ─────────────────────────────────────────────────────
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
@dataclass(frozen=True)
|
|
217
|
+
class UntrustedData:
|
|
218
|
+
"""Typed inert-data wrapper for accepted free text.
|
|
219
|
+
|
|
220
|
+
Maps to untrusted-data.v1 schema fields.
|
|
221
|
+
|
|
222
|
+
Consumers MUST NOT concatenate .value into system instructions, commands,
|
|
223
|
+
tool calls, paths, approvals, or authority. The value field is opaque data,
|
|
224
|
+
not procedure. The four boolean properties below enforce the typed boundary:
|
|
225
|
+
they always return False because an inert wrapper is never an executable.
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
record_id: str
|
|
229
|
+
field_path: str
|
|
230
|
+
policy_version: str
|
|
231
|
+
value: str
|
|
232
|
+
|
|
233
|
+
# Schema version for untrusted-data.v1 (class-level constant, not a field).
|
|
234
|
+
SCHEMA_VERSION: ClassVar[int] = 1
|
|
235
|
+
|
|
236
|
+
def can_select_tools(self) -> bool:
|
|
237
|
+
"""Always False: typed inert data cannot select tools."""
|
|
238
|
+
return False
|
|
239
|
+
|
|
240
|
+
def can_grant_authority(self) -> bool:
|
|
241
|
+
"""Always False: typed inert data cannot grant authority."""
|
|
242
|
+
return False
|
|
243
|
+
|
|
244
|
+
def can_alter_procedure(self) -> bool:
|
|
245
|
+
"""Always False: typed inert data cannot alter procedure."""
|
|
246
|
+
return False
|
|
247
|
+
|
|
248
|
+
def can_supply_executable_path(self) -> bool:
|
|
249
|
+
"""Always False: typed inert data cannot supply executable paths."""
|
|
250
|
+
return False
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
# ── Internal helpers ──────────────────────────────────────────────────────────
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def _reject(
|
|
257
|
+
source_record_id: str,
|
|
258
|
+
policy_version: str,
|
|
259
|
+
profile: str,
|
|
260
|
+
decision_code: str,
|
|
261
|
+
) -> ContentSafetyDecision:
|
|
262
|
+
"""Construct a rejection decision.
|
|
263
|
+
|
|
264
|
+
Carries NO payload bytes, excerpts, or content-derived hashes.
|
|
265
|
+
normalized_record_digest is always absent.
|
|
266
|
+
"""
|
|
267
|
+
return ContentSafetyDecision(
|
|
268
|
+
source_record_id=source_record_id,
|
|
269
|
+
policy_version=policy_version,
|
|
270
|
+
profile=profile,
|
|
271
|
+
decision_code=decision_code,
|
|
272
|
+
normalized_record_digest=None,
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def _accept(
|
|
277
|
+
source_record_id: str,
|
|
278
|
+
policy_version: str,
|
|
279
|
+
profile: str,
|
|
280
|
+
normalized_bytes: bytes,
|
|
281
|
+
) -> ContentSafetyDecision:
|
|
282
|
+
"""Construct an acceptance decision.
|
|
283
|
+
|
|
284
|
+
The normalized_record_digest is the SHA-256 of the normalized bytes,
|
|
285
|
+
prefixed with 'sha256:'. The caller supplies normalized bytes, not raw.
|
|
286
|
+
"""
|
|
287
|
+
digest = "sha256:" + hashlib.sha256(normalized_bytes).hexdigest()
|
|
288
|
+
return ContentSafetyDecision(
|
|
289
|
+
source_record_id=source_record_id,
|
|
290
|
+
policy_version=policy_version,
|
|
291
|
+
profile=profile,
|
|
292
|
+
decision_code="accepted",
|
|
293
|
+
normalized_record_digest=digest,
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
def _profile_max_bytes(profile_cfg: dict) -> int | None:
|
|
298
|
+
"""Return the byte cap for the given profile config, or None if uncapped."""
|
|
299
|
+
if "max_bytes" in profile_cfg:
|
|
300
|
+
return profile_cfg["max_bytes"]
|
|
301
|
+
if "max_total_bytes" in profile_cfg:
|
|
302
|
+
return profile_cfg["max_total_bytes"]
|
|
303
|
+
return None
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
# ── Public guard entry point ──────────────────────────────────────────────────
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
def check_content_safety(
|
|
310
|
+
profile: str,
|
|
311
|
+
payload: bytes,
|
|
312
|
+
*,
|
|
313
|
+
source_record_id: str,
|
|
314
|
+
classification: str = "public",
|
|
315
|
+
) -> ContentSafetyDecision:
|
|
316
|
+
"""Apply the named content-safety profile to payload bytes.
|
|
317
|
+
|
|
318
|
+
Returns a ContentSafetyDecision without persisting anything.
|
|
319
|
+
On rejection, carries NO payload bytes, excerpts, or content-derived hashes.
|
|
320
|
+
On acceptance, carries a SHA-256 digest of the normalized bytes.
|
|
321
|
+
|
|
322
|
+
Checks, in order:
|
|
323
|
+
1. Profile lookup — unknown profile: rejected-missing-profile
|
|
324
|
+
2. Classification check — credential: rejected-credential
|
|
325
|
+
personal: rejected-personal-data
|
|
326
|
+
restricted or unknown: rejected-unknown-class
|
|
327
|
+
3. UTF-8 decoding — invalid encoding: rejected-encoding
|
|
328
|
+
4. Control characters — C0 except HT/LF/CR and DEL: rejected-encoding
|
|
329
|
+
5. Size limit — over profile cap: rejected-size
|
|
330
|
+
6. Executable structure — tool-call, shebang, authority field: rejected-structure
|
|
331
|
+
7. Credential scanner — high-confidence token patterns: rejected-credential
|
|
332
|
+
8. Personal-data scanner — direct identifiers: rejected-personal-data
|
|
333
|
+
9. Accept — returns digest of CRLF-normalized UTF-8 bytes
|
|
334
|
+
|
|
335
|
+
Args:
|
|
336
|
+
profile: Named boundary profile from BOUNDARY_PROFILES.
|
|
337
|
+
payload: Raw bytes to evaluate. Never stored on rejection.
|
|
338
|
+
source_record_id: Stable identity of the source record.
|
|
339
|
+
classification: Producer-declared content class. Defaults to 'public'.
|
|
340
|
+
Only 'public' and 'repository-internal' may persist.
|
|
341
|
+
"""
|
|
342
|
+
# Step 1 — Profile lookup. An unknown profile blocks without inspecting payload.
|
|
343
|
+
profile_cfg = BOUNDARY_PROFILES.get(profile)
|
|
344
|
+
if profile_cfg is None:
|
|
345
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-missing-profile")
|
|
346
|
+
|
|
347
|
+
# Step 2 — Classification check. Reject non-persistable classes immediately.
|
|
348
|
+
if classification not in _PERSISTABLE_CLASSES:
|
|
349
|
+
if classification == _CREDENTIAL_CLASS:
|
|
350
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-credential")
|
|
351
|
+
if classification == _PERSONAL_CLASS:
|
|
352
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-personal-data")
|
|
353
|
+
# restricted and any unknown class use the unknown-class code.
|
|
354
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-unknown-class")
|
|
355
|
+
|
|
356
|
+
# Step 3 — UTF-8 encoding check. Payload must decode without error.
|
|
357
|
+
try:
|
|
358
|
+
text = payload.decode("utf-8", errors="strict")
|
|
359
|
+
except UnicodeDecodeError:
|
|
360
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-encoding")
|
|
361
|
+
|
|
362
|
+
# Step 4 — Control-character check. C0 except HT/LF/CR and DEL reject.
|
|
363
|
+
if _CONTROL_RE.search(text):
|
|
364
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-encoding")
|
|
365
|
+
|
|
366
|
+
# Step 5 — Size limit against the profile cap.
|
|
367
|
+
max_bytes = _profile_max_bytes(profile_cfg)
|
|
368
|
+
if max_bytes is not None and len(payload) > max_bytes:
|
|
369
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-size")
|
|
370
|
+
|
|
371
|
+
# Step 6 — Executable-structure check. Tool-call objects, shebangs, and
|
|
372
|
+
# authority-shaped fields signal executable or capability-granting content.
|
|
373
|
+
for pattern in _EXECUTABLE_PATTERNS:
|
|
374
|
+
if pattern.search(text):
|
|
375
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-structure")
|
|
376
|
+
|
|
377
|
+
# Step 7 — Credential scanner. High-confidence token patterns reject the
|
|
378
|
+
# whole record without retaining any payload bytes.
|
|
379
|
+
for pattern in _CREDENTIAL_PATTERNS:
|
|
380
|
+
if pattern.search(text):
|
|
381
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-credential")
|
|
382
|
+
|
|
383
|
+
# Step 8 — Personal-data scanner. Direct personal identifiers reject without
|
|
384
|
+
# payload retention.
|
|
385
|
+
for pattern in _PERSONAL_DATA_PATTERNS:
|
|
386
|
+
if pattern.search(text):
|
|
387
|
+
return _reject(source_record_id, POLICY_VERSION, profile, "rejected-personal-data")
|
|
388
|
+
|
|
389
|
+
# Step 9 — Accept. Normalize CRLF→LF (matches canonical_contract normalization)
|
|
390
|
+
# and compute the SHA-256 digest of the normalized UTF-8 bytes.
|
|
391
|
+
normalized = text.replace("\r\n", "\n").replace("\r", "\n")
|
|
392
|
+
normalized_bytes = normalized.encode("utf-8")
|
|
393
|
+
return _accept(source_record_id, POLICY_VERSION, profile, normalized_bytes)
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
# ── UntrustedData constructor ─────────────────────────────────────────────────
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
def wrap_as_untrusted(
|
|
400
|
+
record_id: str,
|
|
401
|
+
field_path: str,
|
|
402
|
+
value: str,
|
|
403
|
+
) -> UntrustedData:
|
|
404
|
+
"""Wrap accepted free text as typed inert UntrustedData.
|
|
405
|
+
|
|
406
|
+
The returned wrapper records the policy version that admitted the value
|
|
407
|
+
and the field path within the source record. Callers MUST NOT pass a value
|
|
408
|
+
that was rejected by check_content_safety; this function has no way to
|
|
409
|
+
verify that precondition and trusts the caller's decision record.
|
|
410
|
+
|
|
411
|
+
Consumers of the returned UntrustedData MUST NOT concatenate .value into
|
|
412
|
+
system instructions, commands, tool calls, paths, approvals, or authority.
|
|
413
|
+
"""
|
|
414
|
+
return UntrustedData(
|
|
415
|
+
record_id=record_id,
|
|
416
|
+
field_path=field_path,
|
|
417
|
+
policy_version=POLICY_VERSION,
|
|
418
|
+
value=value,
|
|
419
|
+
)
|