agentbundle 0.29.2__tar.gz → 0.29.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentbundle-0.29.2 → agentbundle-0.29.4}/PKG-INFO +15 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/README-pypi.md +14 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/__init__.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/adapter.toml +92 -95
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +131 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/manifest.json +4 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +9 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/packs/README.md +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/install-marker.py +7 -7
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/target-vocab.toml +1 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/__init__.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapter_root_bins.py +14 -14
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/__init__.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/claude_code.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/codex.py +11 -10
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/copilot.py +4 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/cursor.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/gemini.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/kiro.py +12 -13
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/kiro_ide.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/lint_packs.py +9 -10
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/main.py +17 -17
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/phase_order.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/__init__.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/codex_agent_toml.py +1 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/copilot_agent_md.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/copilot_hooks_json.py +4 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/gemini_command_toml.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/hook_id.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/kiro_ide_hook.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/merge_into_agent_json.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/merge_json.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/user_merge_json.py +7 -7
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/composite-agents-md.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/composite-marketplace.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/marketplace.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/per-pack-apm-package.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/per-pack-claude-plugin.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/per-pack-overlay.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/recipes/self-host.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/scope_rails.py +21 -22
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/self_host.py +33 -34
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/shared_libs.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/target_resolver.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_claude_code.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_codex.py +15 -20
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_copilot.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_cursor.py +23 -24
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_gemini.py +31 -31
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_kiro.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_kiro_alias.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_kiro_cli.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_kiro_ide.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_adapter_root_bins_projection.py +13 -13
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_build_ships_seeds.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_contract.py +31 -31
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_contract_scope.py +16 -17
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_contract_v07.py +14 -12
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_contract_v08.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_end_to_end_build.py +6 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_lint_packs.py +8 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_pack_schema.py +6 -6
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_pack_schema_install.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_pipeline.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_plugin_manifest_schema.py +12 -12
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_projections_merge_json.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_scope_rails.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_security.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_self_host_check.py +82 -18
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_self_host_recipe_config.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_shared_libs_projection.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_shared_prefix_contract.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +12 -12
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +9 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_user_libs_projection.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_workspace_status_projection.py +17 -17
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_writers_emit_lf.py +1 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/user_libs.py +2 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/validate.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/archive.py +9 -11
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/build.py +0 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/config.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/defaults.py +0 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/identity.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/initialise_self_hosted.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/lint.py +7 -9
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/self_host.py +0 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/self_host_windows.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/verify.py +20 -22
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/categories.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/cli.py +25 -25
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/_common.py +4 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/_drop_warning.py +9 -11
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/adapt.py +4 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/config.py +0 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/diff.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/init_state.py +9 -10
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/install.py +196 -204
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/list_installed.py +9 -9
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/list_packs.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/list_profiles.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/pack_evals.py +9 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/package_catalogue.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/profile.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/reconcile.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/render.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/show.py +5 -5
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/uninstall.py +15 -15
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/upgrade.py +17 -18
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/validate.py +20 -21
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/config.py +30 -31
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/https_catalogue.py +2 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/local_exclude.py +7 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/pack_inventory.py +9 -9
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/render.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/safety.py +7 -7
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/scope.py +17 -19
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/source_defaults.py +7 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/statelock.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/user_config.py +0 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/version.py +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/workspace_mcp.py +25 -25
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/PKG-INFO +15 -2
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/SOURCES.txt +1 -4
- {agentbundle-0.29.2 → agentbundle-0.29.4}/pyproject.toml +1 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_adapter_permissions_projection.py +6 -6
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_linear_primitive.py +0 -1
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_elicit.py +13 -13
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_event_bridge.py +8 -8
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_git.py +14 -14
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_lifecycle.py +3 -3
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_stdin.py +16 -16
- {agentbundle-0.29.2 → agentbundle-0.29.4}/tests/test_workspace_mcp_tools.py +8 -8
- agentbundle-0.29.2/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +0 -42
- agentbundle-0.29.2/tests/test_loop_engine_events_jsonl.py +0 -168
- agentbundle-0.29.2/tests/test_workspace_status_engine_autonomous.py +0 -121
- {agentbundle-0.29.2 → agentbundle-0.29.4}/README.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/__main__.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_projectable_subset.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/package.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/oplog.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.29.2 → agentbundle-0.29.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.4
|
|
4
4
|
Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
|
|
5
5
|
Author-email: eugenelim <eugenelim@users.noreply.github.com>
|
|
6
6
|
License: Apache-2.0 OR MIT
|
|
@@ -234,16 +234,29 @@ my-pack/
|
|
|
234
234
|
.claude-plugin/
|
|
235
235
|
plugin.json # Claude Code plugin manifest (hand-authored)
|
|
236
236
|
README.md # the pack's portable doc — projected with the pack
|
|
237
|
-
.apm/ #
|
|
237
|
+
.apm/ # runtime — projected by the build pipeline
|
|
238
238
|
skills/<name>/
|
|
239
239
|
SKILL.md # the skill body; one folder per skill
|
|
240
|
+
scripts/ # helper code the skill invokes
|
|
240
241
|
references/ # progressive-disclosure docs, loaded on demand
|
|
241
242
|
assets/ # templates the skill copies into the repo
|
|
243
|
+
evals/ # activation + output-quality evals, skill-local
|
|
242
244
|
agents/<name>.md # subagents
|
|
243
245
|
hooks/<name>.py # lifecycle hooks
|
|
246
|
+
tests/ # implementation tests — NEVER projected
|
|
247
|
+
skills/<name>/
|
|
248
|
+
hooks/
|
|
249
|
+
pack/
|
|
244
250
|
seeds/ # files scaffolded into the adopter repo
|
|
245
251
|
```
|
|
246
252
|
|
|
253
|
+
Three boundaries: the **pack** owns and executes its tests, **`.apm/`** is the
|
|
254
|
+
runtime export boundary, and a **skill** owns its eval fixtures. Only `.apm/`
|
|
255
|
+
and `seeds/` are projected into an installed environment — `tests/` is visible
|
|
256
|
+
in a catalogue archive, so an extracted pack can verify itself, but `install`
|
|
257
|
+
never places it. Keep tests out of `.apm/` even though the installer would
|
|
258
|
+
ignore them there; the separation is structural, not incidental.
|
|
259
|
+
|
|
247
260
|
`pack.toml` is the **single source of truth** for a pack's metadata. Declare
|
|
248
261
|
`license`, `[[pack.maintainers]]`, `[pack.links]`, `categories`, and
|
|
249
262
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
@@ -212,16 +212,29 @@ my-pack/
|
|
|
212
212
|
.claude-plugin/
|
|
213
213
|
plugin.json # Claude Code plugin manifest (hand-authored)
|
|
214
214
|
README.md # the pack's portable doc — projected with the pack
|
|
215
|
-
.apm/ #
|
|
215
|
+
.apm/ # runtime — projected by the build pipeline
|
|
216
216
|
skills/<name>/
|
|
217
217
|
SKILL.md # the skill body; one folder per skill
|
|
218
|
+
scripts/ # helper code the skill invokes
|
|
218
219
|
references/ # progressive-disclosure docs, loaded on demand
|
|
219
220
|
assets/ # templates the skill copies into the repo
|
|
221
|
+
evals/ # activation + output-quality evals, skill-local
|
|
220
222
|
agents/<name>.md # subagents
|
|
221
223
|
hooks/<name>.py # lifecycle hooks
|
|
224
|
+
tests/ # implementation tests — NEVER projected
|
|
225
|
+
skills/<name>/
|
|
226
|
+
hooks/
|
|
227
|
+
pack/
|
|
222
228
|
seeds/ # files scaffolded into the adopter repo
|
|
223
229
|
```
|
|
224
230
|
|
|
231
|
+
Three boundaries: the **pack** owns and executes its tests, **`.apm/`** is the
|
|
232
|
+
runtime export boundary, and a **skill** owns its eval fixtures. Only `.apm/`
|
|
233
|
+
and `seeds/` are projected into an installed environment — `tests/` is visible
|
|
234
|
+
in a catalogue archive, so an extracted pack can verify itself, but `install`
|
|
235
|
+
never places it. Keep tests out of `.apm/` even though the installer would
|
|
236
|
+
ignore them there; the separation is structural, not incidental.
|
|
237
|
+
|
|
225
238
|
`pack.toml` is the **single source of truth** for a pack's metadata. Declare
|
|
226
239
|
`license`, `[[pack.maintainers]]`, `[pack.links]`, `categories`, and
|
|
227
240
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
The `build` submodule ships the adapter contract, the four reference
|
|
4
4
|
adapters, the recipe-driven build pipeline, and the self-host gate.
|
|
5
5
|
|
|
6
|
-
The CLI surface (
|
|
6
|
+
The CLI surface (F-cli) lives in this package's top-level modules
|
|
7
7
|
and imports `agentbundle.build` as a library — no `sys.path` tricks, no
|
|
8
8
|
`subprocess` to `tools/build/build.py`.
|
|
9
9
|
"""
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
# Adapter contract — every (primitive × adapter) pair enumerated.
|
|
2
2
|
# Validates against ./adapter.schema.json.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
3
|
+
#
|
|
4
|
+
# Version history (continues below the [contract] block):
|
|
5
|
+
# v0.1: base contract.
|
|
6
|
+
# v0.2: scope dimension.
|
|
7
|
+
# v0.3: hook-body / hook-wiring forks.
|
|
8
|
+
# v0.4: claude-plugins install route.
|
|
9
|
+
# v0.5: apm install route.
|
|
10
|
+
# v0.6: codex user-scope table.
|
|
11
|
+
# v0.7: per-IDE projection at repo scope; `allowed-prefixes.repo` on every
|
|
12
|
+
# adapter; copilot scope table. Co-bumped with the credential-broker
|
|
13
|
+
# governance change — the `metadata.auth` lint surface lives in verify.py
|
|
14
|
+
# (_step_agent_artifacts), not in this file.
|
|
15
|
+
# v0.8 (dropped-primitives coverage): codex `agent` projects to
|
|
16
16
|
# `.codex/agents/<name>.toml` via new `codex-agent-toml` mode; codex
|
|
17
17
|
# `hook-wiring` projects to `.codex/hooks.json` via existing `merge-json`
|
|
18
18
|
# mode; codex `.codex/` added to allowed-prefixes; new `codex-agent-
|
|
19
19
|
# frontmatter-v0.8` mapping. Dropped-primitives warning rail introduced
|
|
20
20
|
# in `agentbundle install` for any (adapter, pack) pair where the
|
|
21
21
|
# resolved adapter projects a primitive type the pack ships as `dropped`.
|
|
22
|
-
#
|
|
22
|
+
# v0.9 (kiro adapter split): kiro splits into
|
|
23
23
|
# `kiro-ide` (IDE, .md agents, kiro-ide-hook active, flat path confirmed by
|
|
24
24
|
# Q6 probe no×yes 2026-06-01) and `kiro-cli` (CLI binary, .json agents,
|
|
25
25
|
# hook-wiring retained). `kiro` retained as deprecated alias for `kiro-ide`.
|
|
26
26
|
# `kiro-ide-hook` primitive activated; `kiro-ide-agent-frontmatter-v0.9` renamed
|
|
27
27
|
# to `kiro-ide-agent-frontmatter-v0.9`.
|
|
28
|
-
#
|
|
28
|
+
# v0.10 (copilot full parity): copilot becomes
|
|
29
29
|
# a full-parity, user-scope-capable adapter. `agent` flips `dropped`→
|
|
30
30
|
# `copilot-agent-md` (markdown → `.github/agents/<name>.agent.md`); `hook-wiring`
|
|
31
31
|
# flips `dropped`→`copilot-hooks-json` (one self-contained `<name>.json` per
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
# `[adapter.copilot.scope]` gains `user = "~"` + `allowed-prefixes.user`; new
|
|
36
36
|
# `copilot-agent-frontmatter-v0.10` mapping. `command` stays `dropped`
|
|
37
37
|
# (copilot-cli#618/#1113). Two-pack bump (research + core), not all-pack.
|
|
38
|
-
#
|
|
38
|
+
# Codex agent-config correction (no version bump): corrects the existing
|
|
39
39
|
# `codex-agent-frontmatter-v0.8` mapping to preserve `model` and `tools`
|
|
40
40
|
# intent as documented Codex agent config instead of dropping those fields.
|
|
41
|
-
#
|
|
41
|
+
# v0.11 (cursor full parity): new native
|
|
42
42
|
# `cursor` full-parity adapter projecting all five primitives to `.cursor/*`
|
|
43
43
|
# at both scopes. NO new projection mode and NO adapter.schema.json change —
|
|
44
44
|
# skill→direct-directory, agent→direct-file (+ `cursor-agent-frontmatter-v0.11`;
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
# Distribution-only (not in SELF_HOST_ADAPTERS).
|
|
51
51
|
|
|
52
52
|
[contract]
|
|
53
|
-
# v0.12 (
|
|
53
|
+
# v0.12 (2026-06-11): copilot `skill` flips
|
|
54
54
|
# `instruction-file`→`direct-directory` (first-class Agent Skills at
|
|
55
55
|
# `.github/skills/<name>/SKILL.md`); the `copilot-instruction` frontmatter-default
|
|
56
|
-
# is retired.
|
|
57
|
-
# (Lands atop
|
|
58
|
-
#
|
|
56
|
+
# is retired. The copilot web-tool correction is docs/comments-only.
|
|
57
|
+
# (Lands atop cursor v0.11; the two co-bumped — copilot takes v0.12.)
|
|
58
|
+
# v0.13 (gemini full parity): new native
|
|
59
59
|
# `gemini` full-parity adapter projecting all five primitives to `.gemini/*` at
|
|
60
60
|
# both scopes. One new projection mode (`gemini-command-toml`); a bespoke
|
|
61
61
|
# `.gemini/settings.json` merge carrying `hooks` (event-remapped, fail-closed) +
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
# kept and name-mapped; tier-preserving model map. hook-body lands under
|
|
64
64
|
# `.gemini/hooks/` (the cursor model — single prefix at both scopes). kiro-ide-hook
|
|
65
65
|
# dropped. Distribution-only (not in SELF_HOST_ADAPTERS).
|
|
66
|
-
#
|
|
66
|
+
# v0.14 (enriched pack manifest): pack.toml
|
|
67
67
|
# becomes the rich metadata source of truth (optional readme / display_name /
|
|
68
68
|
# license / maintainers / links / categories / keywords / [pack.metadata.<tool>]
|
|
69
69
|
# / [pack].catalogue). The build projects the cleanly-projectable subset into
|
|
@@ -71,20 +71,20 @@
|
|
|
71
71
|
# each pack's README. All new fields are optional — packs pinned below v0.14
|
|
72
72
|
# build and validate unchanged. Declaration + projection only (no @catalogue/pack
|
|
73
73
|
# resolution, no search, no persisted index).
|
|
74
|
-
#
|
|
74
|
+
# v0.15 (kiro-cli agent skill resources): kiro-cli agent projection
|
|
75
75
|
# injects a fixed skill-resources glob (both install scopes) so headless
|
|
76
76
|
# `--agent` runs reach the bundle's skills — Kiro custom agents don't inherit
|
|
77
|
-
# the default agent's `.kiro/skills` auto-discovery (
|
|
77
|
+
# the default agent's `.kiro/skills` auto-discovery (kiro
|
|
78
78
|
# #6887/#6888/#4993). Additive `inject-resources` on BOTH the kiro-cli and
|
|
79
79
|
# kiro-ide agent projections (CLI → agent JSON, IDE → quoted .md frontmatter).
|
|
80
|
-
#
|
|
80
|
+
# v0.16 (consolidated pack layout): pack.toml
|
|
81
81
|
# gains an optional scope-keyed [pack.layout] table (optional .repo / .user
|
|
82
82
|
# sub-tables, each a `parent` base and/or a within-pack template-path) naming
|
|
83
83
|
# where a consuming pack's durable output lands. Consumed by the new installer
|
|
84
84
|
# `_append_layout_section` step (append-if-exists / never-create / never-
|
|
85
85
|
# overwrite) into an adopter-owned `agentbundle-layout.toml`. Additive +
|
|
86
86
|
# optional — packs pinned below v0.16 build and validate unchanged.
|
|
87
|
-
#
|
|
87
|
+
# v0.17 (shared-prefix registry): the `[contract.shared-prefixes]` registry
|
|
88
88
|
# (below) classifies each allowed-prefix as `shared` (a path more than one
|
|
89
89
|
# adapter reads) or — by absence — `private`, and a shared prefix declares its
|
|
90
90
|
# reader cohort. cursor/gemini/copilot route the `skill` primitive to the shared
|
|
@@ -93,12 +93,12 @@
|
|
|
93
93
|
version = "0.17"
|
|
94
94
|
|
|
95
95
|
# Sibling schemas this contract references — pack metadata and the
|
|
96
|
-
# per-pack Claude-plugin manifest.
|
|
96
|
+
# per-pack Claude-plugin manifest.
|
|
97
97
|
[contract.schemas]
|
|
98
98
|
pack = "pack.schema.json"
|
|
99
99
|
plugin-manifest = "plugin-manifest.schema.json"
|
|
100
100
|
|
|
101
|
-
# Shared-prefix registry
|
|
101
|
+
# Shared-prefix registry. Each key is a `shared` prefix —
|
|
102
102
|
# a path more than one shipped adapter reads — mapped to its reader cohort (the
|
|
103
103
|
# shipped adapters that read it). Every prefix NOT listed here is `private`
|
|
104
104
|
# (adapter-exclusive). The install-time cross-adapter disclosure names a shared
|
|
@@ -127,14 +127,14 @@ source-path = ".apm/hook-wiring/"
|
|
|
127
127
|
[primitive.command]
|
|
128
128
|
source-path = ".apm/commands/"
|
|
129
129
|
|
|
130
|
-
#
|
|
130
|
+
# kiro-ide-hook: standalone IDE event hook files (.kiro.hook JSON).
|
|
131
131
|
# Activated at v0.9 for the kiro-ide adapter; dropped for kiro-cli and others.
|
|
132
132
|
[primitive."kiro-ide-hook"]
|
|
133
133
|
source-path = ".apm/kiro-ide-hooks/"
|
|
134
134
|
|
|
135
|
-
#
|
|
135
|
+
# `shared-libs/` carries Python sibling
|
|
136
136
|
# files. The original projection into every `metadata.auth: creds`
|
|
137
|
-
# skill's `scripts/` was RETIRED
|
|
137
|
+
# skill's `scripts/` was RETIRED (those consumers resolve
|
|
138
138
|
# via the `credbroker` pip library, imported in-process). What survives
|
|
139
139
|
# in `agentbundle.build.shared_libs` is source enumeration
|
|
140
140
|
# (`collect_sources`): the `adapter-root-bins` companion-shim rail reads
|
|
@@ -145,7 +145,7 @@ source-path = ".apm/kiro-ide-hooks/"
|
|
|
145
145
|
[primitive."shared-libs"]
|
|
146
146
|
source-path = ".apm/shared-libs/"
|
|
147
147
|
|
|
148
|
-
#
|
|
148
|
+
# `adapter-root-bins/` carries executable scripts that
|
|
149
149
|
# project to the per-scope artifact root (`~/.agentbundle/bin/` at user
|
|
150
150
|
# scope, `<repo>/.agentbundle/bin/` at repo scope). T6 wires the
|
|
151
151
|
# projection; the declaration is here so the contract is complete at
|
|
@@ -170,15 +170,15 @@ source-path = ".apm/user-libs/"
|
|
|
170
170
|
# Claude Code adapter — 5 projections (one per primitive) + v0.3 forks
|
|
171
171
|
#
|
|
172
172
|
# The legacy `[[adapter."claude-code".projection]]` array carries the
|
|
173
|
-
# repo-scope shape every adapter has consumed since v0.1.
|
|
173
|
+
# repo-scope shape every adapter has consumed since v0.1. v0.3 adds two
|
|
174
174
|
# forward-looking `[adapter."claude-code".projections.<primitive>]` tables
|
|
175
175
|
# (hook-body / hook-wiring) carrying the scope-conditional shape that the
|
|
176
176
|
# v0.3 user-scope pipeline reads. Until that pipeline lands, the legacy
|
|
177
177
|
# entries remain authoritative; the new tables are declarative metadata.
|
|
178
178
|
# ---------------------------------------------------------------------------
|
|
179
179
|
|
|
180
|
-
# Install routes declared for this adapter (
|
|
181
|
-
#
|
|
180
|
+
# Install routes declared for this adapter ("claude-plugins" at v0.4;
|
|
181
|
+
# "apm" added at v0.5).
|
|
182
182
|
# Kiro, Copilot, and Codex do not declare install-routes; the field defaults to ["cli"]
|
|
183
183
|
# on read for adapters that omit it.
|
|
184
184
|
[adapter."claude-code"]
|
|
@@ -215,7 +215,7 @@ mode = "direct-file"
|
|
|
215
215
|
target-path = ".claude/commands/"
|
|
216
216
|
on-conflict = "prompt-then-preserve"
|
|
217
217
|
|
|
218
|
-
# hook-body — scope-conditional target
|
|
218
|
+
# hook-body — scope-conditional target.
|
|
219
219
|
# Forward-looking v0.3 declaration; the legacy array entry above remains the
|
|
220
220
|
# pipeline-of-record until T5/T7 land.
|
|
221
221
|
[adapter."claude-code".projections.hook-body]
|
|
@@ -225,7 +225,7 @@ target.user = ".claude/hooks/<name>.{sh,py}"
|
|
|
225
225
|
on-conflict = "prompt-then-preserve"
|
|
226
226
|
|
|
227
227
|
# hook-wiring — scope-conditional mode/target; user-scope `managed-key`
|
|
228
|
-
# required
|
|
228
|
+
# required.
|
|
229
229
|
[adapter."claude-code".projections.hook-wiring]
|
|
230
230
|
mode.repo = "merge-json"
|
|
231
231
|
mode.user = "user-merge-json"
|
|
@@ -233,7 +233,7 @@ target.repo = ".claude/settings.local.json"
|
|
|
233
233
|
target.user = ".claude/settings.json"
|
|
234
234
|
managed-key.user = "hooks"
|
|
235
235
|
|
|
236
|
-
# Scope dimension
|
|
236
|
+
# Scope dimension. Two roots: repo-local and user-local.
|
|
237
237
|
# `allowed-prefixes.<scope>` fences every write under that scope to a
|
|
238
238
|
# declared prefix list — at user scope this stops a buggy projection
|
|
239
239
|
# rule from resolving under `~/Documents/`. The two-prefix shape covers
|
|
@@ -243,14 +243,14 @@ managed-key.user = "hooks"
|
|
|
243
243
|
[adapter."claude-code".scope]
|
|
244
244
|
repo = "."
|
|
245
245
|
user = "~"
|
|
246
|
-
#
|
|
246
|
+
# Repo-scope projection lands primitives under `.claude/` (skills,
|
|
247
247
|
# agents, commands, hook-wiring) plus `tools/hooks/` for hook bodies — the
|
|
248
248
|
# legacy repo-scope hook-body target that pre-dates the scope dimension.
|
|
249
249
|
allowed-prefixes.repo = [".claude/", ".agentbundle/", "tools/hooks/"]
|
|
250
250
|
allowed-prefixes.user = [".claude/", ".agentbundle/"]
|
|
251
251
|
|
|
252
252
|
# ---------------------------------------------------------------------------
|
|
253
|
-
# Kiro adapter — DEPRECATED ALIAS for kiro-ide
|
|
253
|
+
# Kiro adapter — DEPRECATED ALIAS for kiro-ide.
|
|
254
254
|
#
|
|
255
255
|
# `kiro` is retained as a working alias with no removal timeline so existing
|
|
256
256
|
# packs declaring `allowed-adapters = ["kiro"]` keep working. The Python
|
|
@@ -286,8 +286,8 @@ on-conflict = "prompt-then-preserve"
|
|
|
286
286
|
primitive = "command"
|
|
287
287
|
mode = "dropped"
|
|
288
288
|
|
|
289
|
-
# hook-body — scope-conditional target. User-scope lands under `~/.kiro/hooks
|
|
290
|
-
#
|
|
289
|
+
# hook-body — scope-conditional target. User-scope lands under `~/.kiro/hooks/`.
|
|
290
|
+
# Forward-looking v0.3 declaration;
|
|
291
291
|
# the legacy array entry above remains authoritative until T5/T7.
|
|
292
292
|
[adapter.kiro.projections.hook-body]
|
|
293
293
|
mode = "direct-file"
|
|
@@ -296,9 +296,9 @@ target.user = ".kiro/hooks/<name>.{sh,py}"
|
|
|
296
296
|
on-conflict = "prompt-then-preserve"
|
|
297
297
|
|
|
298
298
|
# hook-wiring — merge into the pack-owned agent JSON. Same mode at both scopes;
|
|
299
|
-
# the agent-file target is scope-conditional via scope-root resolution
|
|
300
|
-
#
|
|
301
|
-
# `degraded-info-log` array entry is removed
|
|
299
|
+
# the agent-file target is scope-conditional via scope-root resolution.
|
|
300
|
+
# The legacy
|
|
301
|
+
# `degraded-info-log` array entry is removed.
|
|
302
302
|
[adapter.kiro.projections.hook-wiring]
|
|
303
303
|
mode = "merge-into-agent-json"
|
|
304
304
|
target.repo = ".kiro/agents/<attach-to-agent>.json"
|
|
@@ -312,28 +312,28 @@ agent-event-vocabulary = [
|
|
|
312
312
|
"stop",
|
|
313
313
|
]
|
|
314
314
|
|
|
315
|
-
# Scope dimension for Kiro
|
|
315
|
+
# Scope dimension for Kiro.
|
|
316
316
|
# User-scope agents live under `~/.kiro/agents/` per Kiro's documented layout
|
|
317
317
|
# (https://kiro.dev/docs/cli/custom-agents/creating/); CLI infrastructure
|
|
318
318
|
# shares the `.agentbundle/` prefix.
|
|
319
319
|
[adapter.kiro.scope]
|
|
320
320
|
repo = "."
|
|
321
321
|
user = "~"
|
|
322
|
-
#
|
|
322
|
+
# Kiro projects skills/agents to `.kiro/`; hook bodies land in the
|
|
323
323
|
# legacy `tools/hooks/` at repo scope (matching the contract's hook-body
|
|
324
324
|
# array entry above).
|
|
325
325
|
allowed-prefixes.repo = [".kiro/", ".agentbundle/", "tools/hooks/"]
|
|
326
326
|
allowed-prefixes.user = [".kiro/", ".agentbundle/"]
|
|
327
327
|
|
|
328
328
|
# ---------------------------------------------------------------------------
|
|
329
|
-
# kiro-ide adapter — targets the Kiro VS Code-fork IDE
|
|
329
|
+
# kiro-ide adapter — targets the Kiro VS Code-fork IDE.
|
|
330
330
|
#
|
|
331
331
|
# Projects agents as `.md` (gray-matter YAML frontmatter + body); the IDE
|
|
332
332
|
# reads `.kiro/agents/<name>.md` via its gray-matter loader. hook-wiring is
|
|
333
|
-
# DROPPED — the IDE loader silently drops any agent carrying a `hooks` key
|
|
334
|
-
#
|
|
333
|
+
# DROPPED — the IDE loader silently drops any agent carrying a `hooks` key.
|
|
334
|
+
# `kiro-ide-hook` is ACTIVATED with the flat path confirmed by
|
|
335
335
|
# Q6 probe (no-recursion, yes-extension-filter, 2026-06-01, Kiro 0.12.224):
|
|
336
|
-
# `.kiro/hooks/<pack>--<name>.kiro.hook`.
|
|
336
|
+
# `.kiro/hooks/<pack>--<name>.kiro.hook`. The split assumed yes-recursion;
|
|
337
337
|
# T1 carries the corrected no-recursion flat path (no T-E1b fires).
|
|
338
338
|
# ---------------------------------------------------------------------------
|
|
339
339
|
|
|
@@ -348,7 +348,7 @@ primitive = "agent"
|
|
|
348
348
|
mode = "direct-file"
|
|
349
349
|
target-path = ".kiro/agents/"
|
|
350
350
|
frontmatter-mapping = "kiro-ide-agent-frontmatter-v0.9"
|
|
351
|
-
# Skill discovery
|
|
351
|
+
# Skill discovery: IDE custom agents / subagents do NOT inherit
|
|
352
352
|
# the default agent's `.kiro/skills` auto-discovery either (kiro #6887/#6888,
|
|
353
353
|
# #4993). Inject the same fixed skill-resources glob as kiro-cli; the IDE
|
|
354
354
|
# agent `resources` field is documented and `skill://`-aware, so it does not
|
|
@@ -371,7 +371,7 @@ mode = "dropped"
|
|
|
371
371
|
primitive = "command"
|
|
372
372
|
mode = "dropped"
|
|
373
373
|
|
|
374
|
-
# hook-body — scope-conditional target
|
|
374
|
+
# hook-body — scope-conditional target.
|
|
375
375
|
[adapter.kiro-ide.projections.hook-body]
|
|
376
376
|
mode = "direct-file"
|
|
377
377
|
target.repo = "tools/hooks/<name>.{sh,py}"
|
|
@@ -406,7 +406,7 @@ allowed-prefixes.repo = [".kiro/", ".agentbundle/", "tools/hooks/"]
|
|
|
406
406
|
allowed-prefixes.user = [".kiro/", ".agentbundle/"]
|
|
407
407
|
|
|
408
408
|
# ---------------------------------------------------------------------------
|
|
409
|
-
# kiro-cli adapter — targets the `kiro` terminal binary
|
|
409
|
+
# kiro-cli adapter — targets the `kiro` terminal binary.
|
|
410
410
|
#
|
|
411
411
|
# Projects agents as `.json` with CLI short-name tool tokens. Retains
|
|
412
412
|
# `hook-wiring` via `merge-into-agent-json`. `kiro-ide-hook` is dropped —
|
|
@@ -424,7 +424,7 @@ primitive = "agent"
|
|
|
424
424
|
mode = "direct-file"
|
|
425
425
|
target-path = ".kiro/agents/"
|
|
426
426
|
frontmatter-mapping = "kiro-cli-agent-frontmatter-v1.0"
|
|
427
|
-
# Skill discovery
|
|
427
|
+
# Skill discovery: Kiro custom agents do NOT inherit the default
|
|
428
428
|
# agent's auto-discovery of `.kiro/skills` (kiro #6887/#6888), so a headless
|
|
429
429
|
# `--agent` run sees zero skills unless the agent declares them. Inject this
|
|
430
430
|
# fixed skill-resources glob (both install scopes) into every projected agent.
|
|
@@ -436,7 +436,7 @@ on-conflict = "prompt-then-preserve"
|
|
|
436
436
|
|
|
437
437
|
[[adapter.kiro-cli.projection]]
|
|
438
438
|
# Legacy repo-scope entry — the pipeline-of-record for repo-scope hook-body
|
|
439
|
-
# projection (mirrors the `kiro` adapter's
|
|
439
|
+
# projection (mirrors the `kiro` adapter's v0.3 hybrid). The table form
|
|
440
440
|
# below is the scope-conditional declaration for the user-scope pipeline;
|
|
441
441
|
# both coexist intentionally. `_iter_primitives` deduplicates via set union.
|
|
442
442
|
primitive = "hook-body"
|
|
@@ -448,7 +448,7 @@ on-conflict = "prompt-then-preserve"
|
|
|
448
448
|
primitive = "command"
|
|
449
449
|
mode = "dropped"
|
|
450
450
|
|
|
451
|
-
# hook-body — scope-conditional target
|
|
451
|
+
# hook-body — scope-conditional target.
|
|
452
452
|
[adapter.kiro-cli.projections.hook-body]
|
|
453
453
|
mode = "direct-file"
|
|
454
454
|
target.repo = "tools/hooks/<name>.{sh,py}"
|
|
@@ -485,15 +485,15 @@ allowed-prefixes.user = [".kiro/", ".agentbundle/"]
|
|
|
485
485
|
# Copilot adapter — 5 projections (one per primitive)
|
|
486
486
|
# ---------------------------------------------------------------------------
|
|
487
487
|
|
|
488
|
-
# `skill` projects as first-class Copilot Agent Skills
|
|
489
|
-
#
|
|
488
|
+
# `skill` projects as first-class Copilot Agent Skills:
|
|
489
|
+
# `direct-directory` passthrough of our canonical
|
|
490
490
|
# `.apm/skills/<name>/SKILL.md` to `.github/skills/<name>/SKILL.md` (repo) and
|
|
491
491
|
# `~/.copilot/skills/<name>/SKILL.md` (user, via the install rewrite). Copilot
|
|
492
492
|
# accepts our Claude SKILL.md verbatim. Was `instruction-file`→`.github/instructions/`.
|
|
493
493
|
[[adapter.copilot.projection]]
|
|
494
494
|
primitive = "skill"
|
|
495
495
|
mode = "direct-directory"
|
|
496
|
-
#
|
|
496
|
+
# Cohort skill home. Copilot reads `.agents/skills/`
|
|
497
497
|
# (project) and `~/.agents/skills/` (personal); routing skills there lets the
|
|
498
498
|
# whole cohort (codex, cursor, gemini, copilot) share one co-owned copy.
|
|
499
499
|
target-path = ".agents/skills/"
|
|
@@ -522,10 +522,10 @@ on-conflict = "prompt-then-preserve"
|
|
|
522
522
|
primitive = "command"
|
|
523
523
|
mode = "dropped"
|
|
524
524
|
|
|
525
|
-
# Scope dimension for Copilot (
|
|
526
|
-
#
|
|
525
|
+
# Scope dimension for Copilot (v0.10 full parity, plus the v0.12 skill
|
|
526
|
+
# surface). Copilot is a full-parity,
|
|
527
527
|
# user-scope-capable adapter: the app + CLI discover skills/agents/hooks from
|
|
528
|
-
# `.github/` (repo) and `~/.copilot/` (user). The repo-only restriction
|
|
528
|
+
# `.github/` (repo) and `~/.copilot/` (user). The repo-only restriction v0.7
|
|
529
529
|
# recorded is superseded-in-part. `skill` projects as a `direct-directory`
|
|
530
530
|
# `SKILL.md` tree; its user target (`~/.copilot/skills/<name>/SKILL.md`) is
|
|
531
531
|
# produced by the install handler's copilot user-scope prefix rewrite
|
|
@@ -534,10 +534,10 @@ mode = "dropped"
|
|
|
534
534
|
[adapter.copilot.scope]
|
|
535
535
|
repo = "."
|
|
536
536
|
user = "~"
|
|
537
|
-
#
|
|
537
|
+
# Repo-scope skills at `.github/skills/`,
|
|
538
538
|
# agents at `.github/agents/`, hook wiring + bodies at `.github/hooks/`.
|
|
539
|
-
#
|
|
540
|
-
# stay native under `.github/`
|
|
539
|
+
# Skills route to the shared `.agents/skills/` home; agents + hooks
|
|
540
|
+
# stay native under `.github/` — only the skill primitive moves.
|
|
541
541
|
allowed-prefixes.repo = [".agents/skills/", ".github/skills/", ".github/agents/", ".github/hooks/"]
|
|
542
542
|
# User-scope home is `~/.copilot/` for agents/hooks (the prefix the install
|
|
543
543
|
# rewrite produces) and `~/.agents/skills/` for skills (scope-agnostic, no
|
|
@@ -579,30 +579,29 @@ on-conflict = "merge-managed-key-only"
|
|
|
579
579
|
primitive = "command"
|
|
580
580
|
mode = "dropped"
|
|
581
581
|
|
|
582
|
-
# Scope dimension for Codex
|
|
582
|
+
# Scope dimension for Codex.
|
|
583
583
|
# User-scope skills live under `~/.agents/skills/` per the codex
|
|
584
584
|
# `direct-directory` projection's `.agents/skills/` target-path above;
|
|
585
585
|
# CLI infrastructure shares the `.agentbundle/` prefix.
|
|
586
586
|
[adapter.codex.scope]
|
|
587
587
|
repo = "."
|
|
588
588
|
user = "~"
|
|
589
|
-
#
|
|
589
|
+
# Codex projects skills to `.agents/skills/`; hook bodies land in
|
|
590
590
|
# the legacy `tools/hooks/` (matching codex's hook-body array entry).
|
|
591
591
|
allowed-prefixes.repo = [".agents/skills/", ".codex/", ".agentbundle/", "tools/hooks/"]
|
|
592
592
|
allowed-prefixes.user = [".agents/skills/", ".codex/", ".agentbundle/"]
|
|
593
593
|
|
|
594
594
|
# ---------------------------------------------------------------------------
|
|
595
|
-
# Cursor adapter — full-parity native adapter (
|
|
596
|
-
# docs/specs/cursor-full-parity, v0.11).
|
|
595
|
+
# Cursor adapter — full-parity native adapter (v0.11).
|
|
597
596
|
#
|
|
598
597
|
# Projects all five catalogue primitives to Cursor's native `.cursor/*`
|
|
599
598
|
# discovery paths at both repo and user scope. Cursor's CLI and IDE share one
|
|
600
|
-
# `.cursor/` layout (no
|
|
599
|
+
# `.cursor/` layout (no kiro-style split). No new projection mode and no
|
|
601
600
|
# adapter.schema.json change: every primitive reuses an already-enumerated
|
|
602
601
|
# mode. The agent uses `direct-file` + a frontmatter mapping (the kiro-ide
|
|
603
602
|
# `.md` shape); because Cursor subagents have no per-agent tool allowlist,
|
|
604
603
|
# cursor.py drops the source `tools` and derives a `readonly` flag for
|
|
605
|
-
# non-mutating agents (documented degradation, the
|
|
604
|
+
# non-mutating agents (documented degradation, the Copilot shape).
|
|
606
605
|
# hook-wiring is `merge-json` to an aggregated `.cursor/hooks.json`; cursor.py's
|
|
607
606
|
# merge helper remaps source events via `hook-event-map` and adds a `version`
|
|
608
607
|
# key. `command` is first-class (Cursor is the second adapter after claude-code
|
|
@@ -617,7 +616,7 @@ allowed-prefixes.user = [".agents/skills/", ".codex/", ".agentbundle/"]
|
|
|
617
616
|
[[adapter.cursor.projection]]
|
|
618
617
|
primitive = "skill"
|
|
619
618
|
mode = "direct-directory"
|
|
620
|
-
#
|
|
619
|
+
# Cohort skill home. Cursor reads `.agents/skills/` and
|
|
621
620
|
# `~/.agents/skills/` alongside `.cursor/skills/`; route skills there to share
|
|
622
621
|
# one co-owned copy across the cohort.
|
|
623
622
|
target-path = ".agents/skills/"
|
|
@@ -642,15 +641,15 @@ mode = "merge-json"
|
|
|
642
641
|
target-path = ".cursor/hooks.json"
|
|
643
642
|
managed-key = "hooks"
|
|
644
643
|
on-conflict = "merge-managed-key-only"
|
|
645
|
-
# Hook-event map
|
|
644
|
+
# Hook-event map. Our hook-wiring source uses Claude-
|
|
646
645
|
# native PascalCase event names (e.g. `[[hooks.SessionStart]]`); Cursor's
|
|
647
646
|
# hooks.json uses camelCase event keys. cursor.py's merge helper reads this
|
|
648
647
|
# table to translate each source event; a source event with no entry here is
|
|
649
648
|
# dropped with a build-time log line (fail-open, the no-silent-caps rule —
|
|
650
649
|
# deliberately unlike copilot-hooks-json's fail-closed map). The map lives in
|
|
651
|
-
# the contract, not the adapter code. (
|
|
652
|
-
#
|
|
653
|
-
#
|
|
650
|
+
# the contract, not the adapter code. (The original design spelled the source
|
|
651
|
+
# vocabulary `agentSpawn`/…; the shipped source is Claude PascalCase, so the
|
|
652
|
+
# map keys on PascalCase — target events unchanged.)
|
|
654
653
|
hook-event-map = { SessionStart = "sessionStart", UserPromptSubmit = "beforeSubmitPrompt", PreToolUse = "preToolUse", PostToolUse = "postToolUse", Stop = "stop" }
|
|
655
654
|
|
|
656
655
|
[[adapter.cursor.projection]]
|
|
@@ -666,7 +665,7 @@ on-conflict = "prompt-then-preserve"
|
|
|
666
665
|
[adapter.cursor.projections.kiro-ide-hook]
|
|
667
666
|
mode = "dropped"
|
|
668
667
|
|
|
669
|
-
# Scope dimension for Cursor
|
|
668
|
+
# Scope dimension for Cursor. Cursor's `.cursor/` prefix
|
|
670
669
|
# is identical at repo and user scope (the claude-code/codex shape), so the
|
|
671
670
|
# divergent user-scope home is produced by the generic user-root resolution,
|
|
672
671
|
# not a Cursor-specific prefix rewrite. `.agentbundle/` carries the install
|
|
@@ -674,14 +673,13 @@ mode = "dropped"
|
|
|
674
673
|
[adapter.cursor.scope]
|
|
675
674
|
repo = "."
|
|
676
675
|
user = "~"
|
|
677
|
-
#
|
|
678
|
-
# agents/hooks stay under `.cursor/` (
|
|
676
|
+
# Skills route to the shared `.agents/skills/` home (both scopes);
|
|
677
|
+
# agents/hooks stay under `.cursor/` (moves only the skill primitive).
|
|
679
678
|
allowed-prefixes.repo = [".agents/skills/", ".cursor/", ".agentbundle/"]
|
|
680
679
|
allowed-prefixes.user = [".agents/skills/", ".cursor/", ".agentbundle/"]
|
|
681
680
|
|
|
682
681
|
# ---------------------------------------------------------------------------
|
|
683
|
-
# Gemini adapter — full-parity native adapter (
|
|
684
|
-
# docs/specs/gemini-full-parity, v0.13).
|
|
682
|
+
# Gemini adapter — full-parity native adapter (v0.13).
|
|
685
683
|
#
|
|
686
684
|
# Projects all five catalogue primitives to Gemini CLI's native `.gemini/*`
|
|
687
685
|
# discovery paths at both repo and user scope. Unlike Cursor, gemini KEEPS and
|
|
@@ -711,7 +709,7 @@ allowed-prefixes.user = [".agents/skills/", ".cursor/", ".agentbundle/"]
|
|
|
711
709
|
[[adapter.gemini.projection]]
|
|
712
710
|
primitive = "skill"
|
|
713
711
|
mode = "direct-directory"
|
|
714
|
-
#
|
|
712
|
+
# Cohort skill home. Gemini CLI reads `.agents/skills/`
|
|
715
713
|
# and `~/.agents/skills/`, and its docs now make the alias precedence-winning
|
|
716
714
|
# over `.gemini/skills/`; route skills there to share one co-owned copy.
|
|
717
715
|
target-path = ".agents/skills/"
|
|
@@ -736,7 +734,7 @@ mode = "merge-json"
|
|
|
736
734
|
target-path = ".gemini/settings.json"
|
|
737
735
|
managed-key = "hooks"
|
|
738
736
|
on-conflict = "merge-managed-key-only"
|
|
739
|
-
# Hook-event map
|
|
737
|
+
# Hook-event map. Our hook-wiring source uses Claude-native
|
|
740
738
|
# PascalCase event names (e.g. `[[hooks.SessionStart]]`); Gemini's settings.json
|
|
741
739
|
# uses its own event vocabulary. gemini.py's settings-merge helper reads this table
|
|
742
740
|
# to translate each source event; a source event with no entry here **fails the
|
|
@@ -744,7 +742,7 @@ on-conflict = "merge-managed-key-only"
|
|
|
744
742
|
# cursor's fail-open drop-with-log). The map lives in the contract, not the adapter
|
|
745
743
|
# code.
|
|
746
744
|
hook-event-map = { SessionStart = "SessionStart", SessionEnd = "SessionEnd", UserPromptSubmit = "BeforeAgent", PreToolUse = "BeforeTool", PostToolUse = "AfterTool", Stop = "AfterAgent" }
|
|
747
|
-
# Static `context.fileName` bridge
|
|
745
|
+
# Static `context.fileName` bridge. gemini.py's settings-merge
|
|
748
746
|
# helper emits `context = { fileName = <this list> }` into the same `.gemini/settings.json`
|
|
749
747
|
# so Gemini CLI reads the canonical `AGENTS.md` (and `GEMINI.md` if present). Data
|
|
750
748
|
# lives in the contract, not a literal in code; written in the single hook-wiring
|
|
@@ -763,7 +761,7 @@ on-conflict = "prompt-then-preserve"
|
|
|
763
761
|
[adapter.gemini.projections.kiro-ide-hook]
|
|
764
762
|
mode = "dropped"
|
|
765
763
|
|
|
766
|
-
# Scope dimension for Gemini
|
|
764
|
+
# Scope dimension for Gemini. Gemini's `.gemini/` prefix is
|
|
767
765
|
# identical at repo and user scope (the claude-code/cursor shape), so the divergent
|
|
768
766
|
# user-scope home is produced by the generic user-root resolution, not a
|
|
769
767
|
# gemini-specific prefix rewrite. Every projected target (skills, agents, commands,
|
|
@@ -773,8 +771,8 @@ mode = "dropped"
|
|
|
773
771
|
[adapter.gemini.scope]
|
|
774
772
|
repo = "."
|
|
775
773
|
user = "~"
|
|
776
|
-
#
|
|
777
|
-
# agents/hooks stay under `.gemini/` (
|
|
774
|
+
# Skills route to the shared `.agents/skills/` home (both scopes);
|
|
775
|
+
# agents/hooks stay under `.gemini/` (moves only the skill primitive).
|
|
778
776
|
allowed-prefixes.repo = [".agents/skills/", ".gemini/", ".agentbundle/"]
|
|
779
777
|
allowed-prefixes.user = [".agents/skills/", ".gemini/", ".agentbundle/"]
|
|
780
778
|
|
|
@@ -811,7 +809,7 @@ rename = "model"
|
|
|
811
809
|
# rejecting the agent for an unknown model.
|
|
812
810
|
values = { opus = "claude-opus-4.6", sonnet = "claude-sonnet-4.5", haiku = "claude-haiku-4.5" }
|
|
813
811
|
|
|
814
|
-
# kiro-cli agent frontmatter v1.0
|
|
812
|
+
# kiro-cli agent frontmatter v1.0: rewrite rules from Claude Code
|
|
815
813
|
# agent markdown to Kiro CLI JSON. Tools map to CLI short-names (not IDE ids).
|
|
816
814
|
# The `kiro` CLI matches agents' `tools` entries by short name; the IDE uses
|
|
817
815
|
# ids — hence the separate table rather than reusing kiro-ide-agent-frontmatter-v0.9.
|
|
@@ -831,8 +829,7 @@ values = { Read = "read", Grep = "grep", Glob = "glob", Edit = "write", Write =
|
|
|
831
829
|
rename = "model"
|
|
832
830
|
values = { opus = "claude-opus-4.6", sonnet = "claude-sonnet-4.5", haiku = "claude-haiku-4.5" }
|
|
833
831
|
|
|
834
|
-
# Codex agent frontmatter v0.8
|
|
835
|
-
# amended by docs/specs/codex-agent-config-projection):
|
|
832
|
+
# Codex agent frontmatter v0.8:
|
|
836
833
|
# rewrite rules from claude-code-style markdown agent (YAML frontmatter with
|
|
837
834
|
# `name`, `description`, optionally `tools`, `model`) to codex's TOML agent
|
|
838
835
|
# shape. `model` maps Claude-style aliases to OpenAI model IDs. `tools`
|
|
@@ -861,7 +858,7 @@ rename = "model"
|
|
|
861
858
|
values = { opus = "gpt-5.5", sonnet = "gpt-5.5", haiku = "gpt-5.4-mini" }
|
|
862
859
|
related-values = { model_reasoning_effort = { opus = "xhigh", sonnet = "medium", haiku = "medium" } }
|
|
863
860
|
|
|
864
|
-
# Copilot agent frontmatter v0.10
|
|
861
|
+
# Copilot agent frontmatter v0.10:
|
|
865
862
|
# rewrite rules from claude-code-style markdown agent (YAML frontmatter with
|
|
866
863
|
# `name`, `description`, optionally `tools`, `model`) to Copilot's `.agent.md`
|
|
867
864
|
# shape. `name` / `description` pass through (identity renames). `tools` is
|
|
@@ -878,7 +875,7 @@ rename = "name"
|
|
|
878
875
|
[frontmatter-mapping."copilot-agent-frontmatter-v0.10".description]
|
|
879
876
|
rename = "description"
|
|
880
877
|
|
|
881
|
-
# Cursor agent frontmatter v0.11
|
|
878
|
+
# Cursor agent frontmatter v0.11:
|
|
882
879
|
# rewrite rules from claude-code-style markdown agent (YAML frontmatter with
|
|
883
880
|
# `name`, `description`, optionally `tools`, `model`) to Cursor's subagent `.md`
|
|
884
881
|
# shape. `name` / `description` / `model` pass through (identity renames; `model`
|
|
@@ -887,7 +884,7 @@ rename = "description"
|
|
|
887
884
|
# have no per-agent tool allowlist, so `cursor.py` drops the source `tools` and
|
|
888
885
|
# derives a `readonly` flag for non-mutating agents (an agent whose declared
|
|
889
886
|
# tool set contains none of Edit/Write/MultiEdit/NotebookEdit). `is_background`
|
|
890
|
-
# is not emitted. This is the documented-degradation shape
|
|
887
|
+
# is not emitted. This is the documented-degradation shape accepted for
|
|
891
888
|
# Copilot's tool handling.
|
|
892
889
|
[frontmatter-mapping."cursor-agent-frontmatter-v0.11"]
|
|
893
890
|
|
|
@@ -900,7 +897,7 @@ rename = "description"
|
|
|
900
897
|
[frontmatter-mapping."cursor-agent-frontmatter-v0.11".model]
|
|
901
898
|
rename = "model"
|
|
902
899
|
|
|
903
|
-
# Gemini agent frontmatter (
|
|
900
|
+
# Gemini agent frontmatter (v0.13):
|
|
904
901
|
# rewrite rules from claude-code-style markdown agent (YAML frontmatter with
|
|
905
902
|
# `name`, `description`, optionally `tools`, `model`) to Gemini CLI's subagent `.md`
|
|
906
903
|
# shape. `name` / `description` pass through (identity renames). Unlike Cursor,
|