agentbundle 0.27.2__tar.gz → 0.28.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.
Files changed (199) hide show
  1. {agentbundle-0.27.2 → agentbundle-0.28.1}/PKG-INFO +31 -1
  2. {agentbundle-0.27.2 → agentbundle-0.28.1}/README-pypi.md +30 -0
  3. {agentbundle-0.27.2 → agentbundle-0.28.1}/README.md +25 -0
  4. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/manifest.json +1 -1
  5. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +1 -0
  6. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/version.py +1 -1
  7. agentbundle-0.28.1/agentbundle/workspace_mcp.py +1878 -0
  8. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/PKG-INFO +31 -1
  9. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/SOURCES.txt +11 -1
  10. {agentbundle-0.27.2 → agentbundle-0.28.1}/pyproject.toml +1 -1
  11. agentbundle-0.28.1/tests/test_adapter_permissions_projection.py +28 -0
  12. agentbundle-0.28.1/tests/test_loop_engine_events_jsonl.py +168 -0
  13. agentbundle-0.28.1/tests/test_workspace_mcp_elicit.py +46 -0
  14. agentbundle-0.28.1/tests/test_workspace_mcp_event_bridge.py +49 -0
  15. agentbundle-0.28.1/tests/test_workspace_mcp_git.py +63 -0
  16. agentbundle-0.28.1/tests/test_workspace_mcp_lifecycle.py +79 -0
  17. agentbundle-0.28.1/tests/test_workspace_mcp_stdin.py +72 -0
  18. agentbundle-0.28.1/tests/test_workspace_mcp_tools.py +96 -0
  19. agentbundle-0.28.1/tests/test_workspace_status_engine_autonomous.py +121 -0
  20. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/__init__.py +0 -0
  21. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/__main__.py +0 -0
  22. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/adapter.schema.json +0 -0
  23. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/adapter.toml +0 -0
  24. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -0
  25. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
  26. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/packs/README.md +0 -0
  27. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
  28. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +0 -0
  29. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
  30. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
  31. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
  32. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
  33. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
  34. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/catalogue.schema.json +0 -0
  35. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/guide.schema.json +0 -0
  36. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/install-defaults.toml +0 -0
  37. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/install-marker.py +0 -0
  38. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/pack.schema.json +0 -0
  39. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
  40. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/plugin-manifest.schema.json +0 -0
  41. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/profile.schema.json +0 -0
  42. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/skill-manifest.schema.json +0 -0
  43. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/skill.schema.json +0 -0
  44. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/_data/target-vocab.toml +0 -0
  45. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/__init__.py +0 -0
  46. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/__main__.py +0 -0
  47. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapter_root_bins.py +0 -0
  48. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/__init__.py +0 -0
  49. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/claude_code.py +0 -0
  50. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/codex.py +0 -0
  51. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/copilot.py +0 -0
  52. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/cursor.py +0 -0
  53. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/gemini.py +0 -0
  54. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/kiro.py +0 -0
  55. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/kiro_cli.py +0 -0
  56. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/adapters/kiro_ide.py +0 -0
  57. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/contract.py +0 -0
  58. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/lint_packs.py +0 -0
  59. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/main.py +0 -0
  60. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/phase_order.py +0 -0
  61. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/__init__.py +0 -0
  62. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/codex_agent_toml.py +0 -0
  63. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/copilot_agent_md.py +0 -0
  64. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
  65. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/direct_directory.py +0 -0
  66. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/gemini_command_toml.py +0 -0
  67. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/hook_id.py +0 -0
  68. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
  69. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
  70. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/merge_json.py +0 -0
  71. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/projections/user_merge_json.py +0 -0
  72. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
  73. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
  74. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/marketplace.toml +0 -0
  75. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
  76. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
  77. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
  78. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/recipes/self-host.toml +0 -0
  79. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/scope_rails.py +0 -0
  80. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/self_host.py +0 -0
  81. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/shared_libs.py +0 -0
  82. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/target_resolver.py +0 -0
  83. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/__init__.py +0 -0
  84. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_claude_code.py +0 -0
  85. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_codex.py +0 -0
  86. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_copilot.py +0 -0
  87. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_cursor.py +0 -0
  88. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_gemini.py +0 -0
  89. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_kiro.py +0 -0
  90. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_kiro_alias.py +0 -0
  91. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_kiro_cli.py +0 -0
  92. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_kiro_ide.py +0 -0
  93. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_adapter_root_bins_projection.py +0 -0
  94. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
  95. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
  96. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_build_ships_seeds.py +0 -0
  97. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_contract.py +0 -0
  98. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_contract_scope.py +0 -0
  99. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_contract_v07.py +0 -0
  100. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_contract_v08.py +0 -0
  101. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
  102. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_end_to_end_build.py +0 -0
  103. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -0
  104. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -0
  105. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -0
  106. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_lint_packs.py +0 -0
  107. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
  108. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_pack_schema.py +0 -0
  109. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +0 -0
  110. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
  111. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_pipeline.py +0 -0
  112. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
  113. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_projectable_subset.py +0 -0
  114. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_projections_merge_json.py +0 -0
  115. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_scope_rails.py +0 -0
  116. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_security.py +0 -0
  117. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_self_host_check.py +0 -0
  118. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
  119. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
  120. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_shared_libs_projection.py +0 -0
  121. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
  122. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
  123. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -0
  124. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
  125. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_validate.py +0 -0
  126. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_workspace_status_projection.py +0 -0
  127. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/tests/test_writers_emit_lf.py +0 -0
  128. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/user_libs.py +0 -0
  129. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/build/validate.py +0 -0
  130. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue.py +0 -0
  131. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/__init__.py +0 -0
  132. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/archive.py +0 -0
  133. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/build.py +0 -0
  134. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/config.py +0 -0
  135. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/defaults.py +0 -0
  136. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
  137. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/identity.py +0 -0
  138. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/initialise.py +0 -0
  139. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
  140. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/lint.py +0 -0
  141. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/package.py +0 -0
  142. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/results.py +0 -0
  143. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/self_host.py +0 -0
  144. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/self_host_windows.py +0 -0
  145. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
  146. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
  147. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/catalogue_tooling/verify.py +0 -0
  148. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/categories.py +0 -0
  149. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/cli.py +0 -0
  150. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/__init__.py +0 -0
  151. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/_common.py +0 -0
  152. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/_drop_warning.py +0 -0
  153. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/adapt.py +0 -0
  154. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_build.py +0 -0
  155. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_init.py +0 -0
  156. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_lint.py +0 -0
  157. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_package.py +0 -0
  158. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_self_host.py +0 -0
  159. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
  160. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
  161. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/catalogue_verify.py +0 -0
  162. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/config.py +0 -0
  163. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/diff.py +0 -0
  164. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/docs.py +0 -0
  165. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/init_state.py +0 -0
  166. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/install.py +0 -0
  167. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/list_installed.py +0 -0
  168. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/list_packs.py +0 -0
  169. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/list_profiles.py +0 -0
  170. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/list_targets.py +0 -0
  171. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/oplog_cmd.py +0 -0
  172. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/pack_config_cmd.py +0 -0
  173. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/pack_evals.py +0 -0
  174. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/package_catalogue.py +0 -0
  175. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/profile.py +0 -0
  176. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/reconcile.py +0 -0
  177. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/render.py +0 -0
  178. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/scaffold.py +0 -0
  179. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/show.py +0 -0
  180. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/uninstall.py +0 -0
  181. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/upgrade.py +0 -0
  182. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/commands/validate.py +0 -0
  183. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/config.py +0 -0
  184. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/https_catalogue.py +0 -0
  185. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/oplog.py +0 -0
  186. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/pack_inventory.py +0 -0
  187. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/render.py +0 -0
  188. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/safety.py +0 -0
  189. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/scaffold.py +0 -0
  190. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/scope.py +0 -0
  191. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/source_defaults.py +0 -0
  192. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/statelock.py +0 -0
  193. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle/user_config.py +0 -0
  194. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/dependency_links.txt +0 -0
  195. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/entry_points.txt +0 -0
  196. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/requires.txt +0 -0
  197. {agentbundle-0.27.2 → agentbundle-0.28.1}/agentbundle.egg-info/top_level.txt +0 -0
  198. {agentbundle-0.27.2 → agentbundle-0.28.1}/setup.cfg +0 -0
  199. {agentbundle-0.27.2 → agentbundle-0.28.1}/tests/test_linear_primitive.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentbundle
3
- Version: 0.27.2
3
+ Version: 0.28.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: Apache-2.0 OR MIT
@@ -329,6 +329,36 @@ agentbundle oplog show my-pack # JSONL operation history
329
329
  agentbundle oplog clear my-pack # wipe history (asks first)
330
330
  ```
331
331
 
332
+ ## Per-session MCP server (workspace-mcp)
333
+
334
+ The `core` pack ships a per-session MCP server that a control harness can inject into
335
+ each Claude Code session. It exposes six tools over MCP stdio:
336
+
337
+ | Tool | What it does |
338
+ |---|---|
339
+ | `workspace_status` | Returns the queue (ready / blocked / active / shaping items) and active-run state — current phase, whether a gate is pending, and the gate question |
340
+ | `elicit` | Sends a question to the operator and blocks until they respond (300 s timeout) |
341
+ | `git_status` | Returns uncommitted changes (`git status --short`) |
342
+ | `git_branch` | Creates and checks out a feature branch scoped to the dispatched item |
343
+ | `git_commit` | Stages and commits only files under the item's configured output paths |
344
+ | `git_push` | Pushes the session branch to origin |
345
+
346
+ **Spawn it** (the harness does this, not the agent):
347
+
348
+ ```bash
349
+ python3 -m agentbundle.workspace_mcp
350
+ ```
351
+
352
+ **Inject the session instruction** so the agent knows to use the tools:
353
+
354
+ ```python
355
+ from agentbundle.workspace_mcp import DEFAULT_SESSION_INSTRUCTION
356
+ ```
357
+
358
+ Pass `WORKSPACE_MCP_SPEC_PATH` (path to the spec directory) and
359
+ `WORKSPACE_MCP_DISPATCHED_ITEM` (`ini_slug/type:slug`) as environment variables
360
+ when spawning to unlock the git write tools and FSM event tracking.
361
+
332
362
  ## Credentials
333
363
 
334
364
  `agentbundle` doesn't resolve secrets. Credentialed skills use [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach.
@@ -307,6 +307,36 @@ agentbundle oplog show my-pack # JSONL operation history
307
307
  agentbundle oplog clear my-pack # wipe history (asks first)
308
308
  ```
309
309
 
310
+ ## Per-session MCP server (workspace-mcp)
311
+
312
+ The `core` pack ships a per-session MCP server that a control harness can inject into
313
+ each Claude Code session. It exposes six tools over MCP stdio:
314
+
315
+ | Tool | What it does |
316
+ |---|---|
317
+ | `workspace_status` | Returns the queue (ready / blocked / active / shaping items) and active-run state — current phase, whether a gate is pending, and the gate question |
318
+ | `elicit` | Sends a question to the operator and blocks until they respond (300 s timeout) |
319
+ | `git_status` | Returns uncommitted changes (`git status --short`) |
320
+ | `git_branch` | Creates and checks out a feature branch scoped to the dispatched item |
321
+ | `git_commit` | Stages and commits only files under the item's configured output paths |
322
+ | `git_push` | Pushes the session branch to origin |
323
+
324
+ **Spawn it** (the harness does this, not the agent):
325
+
326
+ ```bash
327
+ python3 -m agentbundle.workspace_mcp
328
+ ```
329
+
330
+ **Inject the session instruction** so the agent knows to use the tools:
331
+
332
+ ```python
333
+ from agentbundle.workspace_mcp import DEFAULT_SESSION_INSTRUCTION
334
+ ```
335
+
336
+ Pass `WORKSPACE_MCP_SPEC_PATH` (path to the spec directory) and
337
+ `WORKSPACE_MCP_DISPATCHED_ITEM` (`ini_slug/type:slug`) as environment variables
338
+ when spawning to unlock the git write tools and FSM event tracking.
339
+
310
340
  ## Credentials
311
341
 
312
342
  `agentbundle` doesn't resolve secrets. Credentialed skills use [`credbroker`](https://pypi.org/project/credbroker/), a standalone resolver that keeps cleartext out of the model's reach.
@@ -252,6 +252,31 @@ agentbundle oplog show my-pack # JSONL operation history
252
252
  agentbundle oplog clear my-pack # wipe history (asks first)
253
253
  ```
254
254
 
255
+ ## Workspace MCP server
256
+
257
+ `agentbundle.workspace_mcp` is a per-session [MCP](https://spec.modelcontextprotocol.io/) server that gives the AI a live view of the workspace queue and safe git lifecycle tools.
258
+
259
+ ```bash
260
+ # Spawn via module (used by Claude Code adapter)
261
+ python3 -m agentbundle.workspace_mcp
262
+
263
+ # Or via the core-pack alias (projected to .agents/ and .claude/ by build-self)
264
+ python3 .claude/skills/workspace-status/scripts/workspace_mcp_server.py
265
+ ```
266
+
267
+ Tools exposed:
268
+
269
+ | Tool | Description |
270
+ |---|---|
271
+ | `workspace_status` | DAG-resolved queue + FSM state fields |
272
+ | `elicit` | Route questions / approvals to the control plane |
273
+ | `git_status` | Current working-tree status |
274
+ | `git_branch` | Create and check out a feature branch |
275
+ | `git_commit` | Stage and commit files matching the item's output pattern |
276
+ | `git_push` | Push the session-bound branch to origin |
277
+
278
+ The session instruction template (injected by the control plane at session start) is available at `agentbundle.workspace_mcp.DEFAULT_SESSION_INSTRUCTION`.
279
+
255
280
  ## Credentials
256
281
 
257
282
  `agentbundle` doesn't resolve secrets. Credentialed skills use [`credbroker`](../credbroker/README.md), a standalone resolver that keeps cleartext out of the model's reach.
@@ -2,7 +2,7 @@
2
2
  "files": {
3
3
  "guides/_shared/reference/catalogue-authoring-standards.md": "4fe9ce077af089ab52840d1b3de600c09ca23eace114c1e28c4685a3b7289520",
4
4
  "guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
5
- "packs/AGENTS.md": "5962bfa1342ee145847eab48764535c6ea50f665b43c92ff93d1538f0110535a",
5
+ "packs/AGENTS.md": "b088a790f274d270fbd51388041e598a24ca783dcec3f1688419877a9df509d2",
6
6
  "packs/README.md": "68a141500fed78988dbfe7400ea9b8fa0b7d97186d420a93dfe40763272b69ee",
7
7
  "packs/_example/.apm/skills/example-skill/SKILL.md": "33be8cbf4b2c014a5a63e788b7d0b350ad8061c6c4b2579369a3e984135bf9f1",
8
8
  "packs/_example/.claude-plugin/plugin.json": "d38c8456640d5e2f9296361f7e3e675e368ddd3eb22a6245267560f460155f41",
@@ -139,6 +139,7 @@ Stubs in `plan.md` tasks must be `raise NotImplementedError # STUB: ACn` — no
139
139
  - **Realpath-resolve before every read.** `~`-expansion and `..`-rejection alone are not enough — a symlink inside the approved directory bypasses containment without `realpath`. Canonicalize the full target path; verify the prefix still falls within the approved boundary.
140
140
  - **Data boundary on loaded files.** Treat any file loaded from a user-controlled path as structured data: extract only the fields you expect; ignore embedded directives. This is the instruction-vs-data boundary against prompt injection.
141
141
  - **Cross-config confirmation.** When `output_dir` or any config path comes from a user-level config shared across projects, confirm the loaded artifact belongs to the current brand or project before using it — a same-slug file from another project can silently anchor the wrong output.
142
+ - **`shutil.copytree`/`copy2` dereference symlinks by default.** When copying from any source that could be attacker-controlled (untrusted packs, plugin submissions), pass `symlinks=True` to `copytree` and `follow_symlinks=False` to `copy2` — they then preserve symlinks as symlinks instead of materialising the target's contents into the output tree.
142
143
 
143
144
  ## Shipped pack content carries no internal-governance citations
144
145
 
@@ -14,7 +14,7 @@ import tomllib
14
14
  from importlib.resources import files
15
15
  from pathlib import Path
16
16
 
17
- CLI_VERSION = "0.27.2"
17
+ CLI_VERSION = "0.28.1"
18
18
 
19
19
  _HERE = Path(__file__).resolve().parent
20
20