beadhive 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- beadhive-0.1.0/.claude/settings.json +19 -0
- beadhive-0.1.0/.githooks/pre-commit +4 -0
- beadhive-0.1.0/.github/workflows/release.yml +46 -0
- beadhive-0.1.0/.gitignore +47 -0
- beadhive-0.1.0/.markdownlint-cli2.jsonc +19 -0
- beadhive-0.1.0/.mise.toml +11 -0
- beadhive-0.1.0/Brewfile +9 -0
- beadhive-0.1.0/CHANGELOG.md +35 -0
- beadhive-0.1.0/INSTALL.md +122 -0
- beadhive-0.1.0/PKG-INFO +84 -0
- beadhive-0.1.0/README.md +67 -0
- beadhive-0.1.0/docs/AGF.md +269 -0
- beadhive-0.1.0/docs/ASSURANCE.md +89 -0
- beadhive-0.1.0/docs/BEAD-BACKENDS.md +201 -0
- beadhive-0.1.0/docs/BEADS-SYNC.md +148 -0
- beadhive-0.1.0/docs/CLI.md +68 -0
- beadhive-0.1.0/docs/CONFIGURATION.md +321 -0
- beadhive-0.1.0/docs/CONTROL-PLANE.md +213 -0
- beadhive-0.1.0/docs/DESIGN.md +107 -0
- beadhive-0.1.0/docs/DIAGNOSTICS.md +51 -0
- beadhive-0.1.0/docs/DOLT.md +43 -0
- beadhive-0.1.0/docs/HUB.md +61 -0
- beadhive-0.1.0/docs/INTEGRATIONS.md +182 -0
- beadhive-0.1.0/docs/LABELS.md +67 -0
- beadhive-0.1.0/docs/MCP.md +200 -0
- beadhive-0.1.0/docs/METADATA-CACHE.md +294 -0
- beadhive-0.1.0/docs/OBSERVABILITY.md +389 -0
- beadhive-0.1.0/docs/ONBOARDING.md +634 -0
- beadhive-0.1.0/docs/OVERVIEW.md +70 -0
- beadhive-0.1.0/docs/PASSTHROUGH.md +83 -0
- beadhive-0.1.0/docs/PLANNING-PLANE.md +235 -0
- beadhive-0.1.0/docs/REPORT-CHANNEL.md +193 -0
- beadhive-0.1.0/docs/RIGS.md +359 -0
- beadhive-0.1.0/docs/WORK.md +361 -0
- beadhive-0.1.0/docs/WORKTREES.md +228 -0
- beadhive-0.1.0/docs/design/ade-client-interfaces.md +187 -0
- beadhive-0.1.0/docs/design/bead-backend-abstraction.md +169 -0
- beadhive-0.1.0/docs/design/br-agf-fit-and-state-compat-layers.md +369 -0
- beadhive-0.1.0/docs/design/gas-frameworks-comparison.md +357 -0
- beadhive-0.1.0/docs/design/limn-name-collision-check.md +106 -0
- beadhive-0.1.0/docs/design/limn-naming-strategy-adr.md +116 -0
- beadhive-0.1.0/docs/design/roles-rbac-matrix.md +200 -0
- beadhive-0.1.0/docs/design/roles-rbac-reconciliation-log.md +141 -0
- beadhive-0.1.0/docs/schemas/report-channel.example.json +17 -0
- beadhive-0.1.0/docs/schemas/report-channel.schema.json +76 -0
- beadhive-0.1.0/docs/spikes/fekf-10-resumable-agent.md +157 -0
- beadhive-0.1.0/justfile +88 -0
- beadhive-0.1.0/pyproject.toml +77 -0
- beadhive-0.1.0/scripts/profile_fleet_health.py +116 -0
- beadhive-0.1.0/src/beadhive/__init__.py +1 -0
- beadhive-0.1.0/src/beadhive/adopt.py +143 -0
- beadhive-0.1.0/src/beadhive/archive.py +165 -0
- beadhive-0.1.0/src/beadhive/assets/AGF-hint.md +10 -0
- beadhive-0.1.0/src/beadhive/assets/PRIME.md +131 -0
- beadhive-0.1.0/src/beadhive/assets/claude-settings.json +21 -0
- beadhive-0.1.0/src/beadhive/assets/observaloop/bh-dashboard.json +1100 -0
- beadhive-0.1.0/src/beadhive/assets/observaloop/cli-metrics-preset.yaml +49 -0
- beadhive-0.1.0/src/beadhive/bd.py +154 -0
- beadhive-0.1.0/src/beadhive/cli.py +1484 -0
- beadhive-0.1.0/src/beadhive/config.py +1304 -0
- beadhive-0.1.0/src/beadhive/doctor.py +675 -0
- beadhive-0.1.0/src/beadhive/dolt.py +130 -0
- beadhive-0.1.0/src/beadhive/escalate.py +153 -0
- beadhive-0.1.0/src/beadhive/git.py +45 -0
- beadhive-0.1.0/src/beadhive/gitworkspace.py +86 -0
- beadhive-0.1.0/src/beadhive/guard.py +292 -0
- beadhive-0.1.0/src/beadhive/hq.py +53 -0
- beadhive-0.1.0/src/beadhive/hub.py +202 -0
- beadhive-0.1.0/src/beadhive/identity.py +114 -0
- beadhive-0.1.0/src/beadhive/log.py +176 -0
- beadhive-0.1.0/src/beadhive/mcp.py +875 -0
- beadhive-0.1.0/src/beadhive/metadata.py +420 -0
- beadhive-0.1.0/src/beadhive/molecule.py +333 -0
- beadhive-0.1.0/src/beadhive/observaloop.py +465 -0
- beadhive-0.1.0/src/beadhive/observaloop_env.py +170 -0
- beadhive-0.1.0/src/beadhive/onboard.py +735 -0
- beadhive-0.1.0/src/beadhive/orca.py +655 -0
- beadhive-0.1.0/src/beadhive/otel.py +958 -0
- beadhive-0.1.0/src/beadhive/otel_lgtm.py +75 -0
- beadhive-0.1.0/src/beadhive/plan.py +966 -0
- beadhive-0.1.0/src/beadhive/plugins.py +64 -0
- beadhive-0.1.0/src/beadhive/registry.py +425 -0
- beadhive-0.1.0/src/beadhive/report.py +191 -0
- beadhive-0.1.0/src/beadhive/report_target.py +120 -0
- beadhive-0.1.0/src/beadhive/retire.py +368 -0
- beadhive-0.1.0/src/beadhive/rig.py +658 -0
- beadhive-0.1.0/src/beadhive/rig_migrate.py +167 -0
- beadhive-0.1.0/src/beadhive/rig_ready.py +268 -0
- beadhive-0.1.0/src/beadhive/role.py +151 -0
- beadhive-0.1.0/src/beadhive/route.py +90 -0
- beadhive-0.1.0/src/beadhive/run.py +78 -0
- beadhive-0.1.0/src/beadhive/safety.py +1325 -0
- beadhive-0.1.0/src/beadhive/schedule.py +294 -0
- beadhive-0.1.0/src/beadhive/setup.py +218 -0
- beadhive-0.1.0/src/beadhive/state.py +154 -0
- beadhive-0.1.0/src/beadhive/survey.py +270 -0
- beadhive-0.1.0/src/beadhive/templates/config.example.yaml +183 -0
- beadhive-0.1.0/src/beadhive/templates/docker-compose.otel.yml +30 -0
- beadhive-0.1.0/src/beadhive/templates/docker-compose.yml +24 -0
- beadhive-0.1.0/src/beadhive/templates/env.example +20 -0
- beadhive-0.1.0/src/beadhive/triage.py +293 -0
- beadhive-0.1.0/src/beadhive/validate.py +116 -0
- beadhive-0.1.0/src/beadhive/work.py +1801 -0
- beadhive-0.1.0/src/beadhive/work_group.py +258 -0
- beadhive-0.1.0/src/beadhive/work_logic.py +200 -0
- beadhive-0.1.0/src/beadhive/work_show.py +213 -0
- beadhive-0.1.0/src/beadhive/worktree.py +1516 -0
- beadhive-0.1.0/src/beadhive/worktree_merge.py +238 -0
- beadhive-0.1.0/src/beadhive/wt_status.py +275 -0
- beadhive-0.1.0/tests/conftest.py +85 -0
- beadhive-0.1.0/tests/fixture_config.yaml +33 -0
- beadhive-0.1.0/tests/fixture_workspace.toml +14 -0
- beadhive-0.1.0/tests/harness/__init__.py +6 -0
- beadhive-0.1.0/tests/harness/beads.py +94 -0
- beadhive-0.1.0/tests/harness/graph.py +42 -0
- beadhive-0.1.0/tests/harness/history.py +75 -0
- beadhive-0.1.0/tests/harness/modalities.py +208 -0
- beadhive-0.1.0/tests/harness/noisy.py +74 -0
- beadhive-0.1.0/tests/harness/render.py +134 -0
- beadhive-0.1.0/tests/harness/rig.py +96 -0
- beadhive-0.1.0/tests/harness/world.py +125 -0
- beadhive-0.1.0/tests/test_adopt.py +114 -0
- beadhive-0.1.0/tests/test_agf_modalities.py +42 -0
- beadhive-0.1.0/tests/test_agf_remote_sandbox.py +49 -0
- beadhive-0.1.0/tests/test_bd_json_seam.py +85 -0
- beadhive-0.1.0/tests/test_bd_repo_sync_additive.py +166 -0
- beadhive-0.1.0/tests/test_config.py +244 -0
- beadhive-0.1.0/tests/test_config_claude.py +168 -0
- beadhive-0.1.0/tests/test_config_dotted.py +221 -0
- beadhive-0.1.0/tests/test_config_observaloop.py +241 -0
- beadhive-0.1.0/tests/test_config_orca.py +155 -0
- beadhive-0.1.0/tests/test_config_work.py +119 -0
- beadhive-0.1.0/tests/test_config_worktrees.py +42 -0
- beadhive-0.1.0/tests/test_doctor.py +390 -0
- beadhive-0.1.0/tests/test_error_boundaries.py +337 -0
- beadhive-0.1.0/tests/test_escalate.py +310 -0
- beadhive-0.1.0/tests/test_guard.py +234 -0
- beadhive-0.1.0/tests/test_hq.py +319 -0
- beadhive-0.1.0/tests/test_hub.py +212 -0
- beadhive-0.1.0/tests/test_identity.py +92 -0
- beadhive-0.1.0/tests/test_log.py +207 -0
- beadhive-0.1.0/tests/test_mcp.py +393 -0
- beadhive-0.1.0/tests/test_mcp_doctor_resource.py +70 -0
- beadhive-0.1.0/tests/test_mcp_install.py +127 -0
- beadhive-0.1.0/tests/test_mcp_labels_validation_resource.py +159 -0
- beadhive-0.1.0/tests/test_mcp_notify.py +110 -0
- beadhive-0.1.0/tests/test_mcp_plans_resources.py +189 -0
- beadhive-0.1.0/tests/test_mcp_resource.py +441 -0
- beadhive-0.1.0/tests/test_mcp_resources.py +73 -0
- beadhive-0.1.0/tests/test_mcp_rigs_resources.py +163 -0
- beadhive-0.1.0/tests/test_mcp_tool_span.py +203 -0
- beadhive-0.1.0/tests/test_mcp_work_intake_dupes_resource.py +140 -0
- beadhive-0.1.0/tests/test_mcp_work_issue_resource.py +129 -0
- beadhive-0.1.0/tests/test_mcp_work_ready_resource.py +128 -0
- beadhive-0.1.0/tests/test_mcp_work_schedule_resource.py +251 -0
- beadhive-0.1.0/tests/test_mcp_work_show_resource.py +208 -0
- beadhive-0.1.0/tests/test_metadata.py +452 -0
- beadhive-0.1.0/tests/test_metrics_verify.py +250 -0
- beadhive-0.1.0/tests/test_molecule.py +270 -0
- beadhive-0.1.0/tests/test_observaloop.py +592 -0
- beadhive-0.1.0/tests/test_observaloop_cli.py +224 -0
- beadhive-0.1.0/tests/test_observaloop_env.py +275 -0
- beadhive-0.1.0/tests/test_onboard.py +259 -0
- beadhive-0.1.0/tests/test_onboard_dag.py +303 -0
- beadhive-0.1.0/tests/test_onboard_plugin.py +121 -0
- beadhive-0.1.0/tests/test_orca.py +1016 -0
- beadhive-0.1.0/tests/test_otel.py +845 -0
- beadhive-0.1.0/tests/test_otel_cli.py +62 -0
- beadhive-0.1.0/tests/test_otel_cli_instrument.py +225 -0
- beadhive-0.1.0/tests/test_otel_cli_span.py +237 -0
- beadhive-0.1.0/tests/test_otel_flow.py +121 -0
- beadhive-0.1.0/tests/test_otel_genai.py +146 -0
- beadhive-0.1.0/tests/test_otel_instrument.py +230 -0
- beadhive-0.1.0/tests/test_otel_lgtm.py +96 -0
- beadhive-0.1.0/tests/test_otel_passthrough.py +141 -0
- beadhive-0.1.0/tests/test_otel_verify.py +202 -0
- beadhive-0.1.0/tests/test_plan.py +1299 -0
- beadhive-0.1.0/tests/test_plugin_cli.py +126 -0
- beadhive-0.1.0/tests/test_plugins.py +88 -0
- beadhive-0.1.0/tests/test_refine.py +145 -0
- beadhive-0.1.0/tests/test_report.py +238 -0
- beadhive-0.1.0/tests/test_report_channel.py +69 -0
- beadhive-0.1.0/tests/test_report_target.py +112 -0
- beadhive-0.1.0/tests/test_retire.py +211 -0
- beadhive-0.1.0/tests/test_rig_add_rm.py +77 -0
- beadhive-0.1.0/tests/test_rig_agents.py +38 -0
- beadhive-0.1.0/tests/test_rig_agf_hint.py +44 -0
- beadhive-0.1.0/tests/test_rig_archive.py +403 -0
- beadhive-0.1.0/tests/test_rig_available.py +108 -0
- beadhive-0.1.0/tests/test_rig_claude.py +93 -0
- beadhive-0.1.0/tests/test_rig_migrate.py +180 -0
- beadhive-0.1.0/tests/test_rig_observaloop.py +366 -0
- beadhive-0.1.0/tests/test_rig_onboard.py +187 -0
- beadhive-0.1.0/tests/test_rig_plugin_installer.py +350 -0
- beadhive-0.1.0/tests/test_rig_ready.py +161 -0
- beadhive-0.1.0/tests/test_rig_ready_plugin.py +111 -0
- beadhive-0.1.0/tests/test_rig_reinit.py +159 -0
- beadhive-0.1.0/tests/test_rig_retire.py +414 -0
- beadhive-0.1.0/tests/test_rig_skills.py +69 -0
- beadhive-0.1.0/tests/test_rig_survey.py +510 -0
- beadhive-0.1.0/tests/test_role.py +320 -0
- beadhive-0.1.0/tests/test_safety.py +1441 -0
- beadhive-0.1.0/tests/test_schedule.py +363 -0
- beadhive-0.1.0/tests/test_service_extraction.py +114 -0
- beadhive-0.1.0/tests/test_setup.py +387 -0
- beadhive-0.1.0/tests/test_sugar_verbs.py +156 -0
- beadhive-0.1.0/tests/test_triage.py +307 -0
- beadhive-0.1.0/tests/test_work.py +2560 -0
- beadhive-0.1.0/tests/test_work_flow.py +184 -0
- beadhive-0.1.0/tests/test_work_reads.py +107 -0
- beadhive-0.1.0/tests/test_work_refine_int.py +159 -0
- beadhive-0.1.0/tests/test_worktree.py +1383 -0
- beadhive-0.1.0/tests/test_ws.py +773 -0
- beadhive-0.1.0/tests/test_wt_status.py +477 -0
- beadhive-0.1.0/uv.lock +1888 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Publishes the built distribution to PyPI via Trusted Publishing (OIDC) — no
|
|
4
|
+
# stored API token. Fires on a v* tag push; workflow_dispatch allows a manual
|
|
5
|
+
# re-run. The Trusted Publisher on pypi.org must name this repo + this
|
|
6
|
+
# workflow file (release.yml) + project `beadhive` (see
|
|
7
|
+
# beadhive/infra manifests/trusted-publishers.yaml).
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
tags:
|
|
11
|
+
- "v*"
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
publish:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
environment: pypi-prod # approval gate; configured under repo Settings → Environments
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read # job-level perms REPLACE workflow-level — must re-list to checkout a private repo
|
|
23
|
+
id-token: write # required for OIDC token exchange with PyPI
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- name: Install uv
|
|
28
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
29
|
+
with:
|
|
30
|
+
enable-cache: true
|
|
31
|
+
|
|
32
|
+
- name: Build sdist + wheel
|
|
33
|
+
run: uv build
|
|
34
|
+
|
|
35
|
+
- name: Verify distribution metadata
|
|
36
|
+
run: uvx twine check dist/*
|
|
37
|
+
|
|
38
|
+
- name: Smoke-import the built wheel
|
|
39
|
+
run: uv run --isolated --no-project --with dist/*.whl python -c "import beadhive"
|
|
40
|
+
|
|
41
|
+
# Trusted Publishing via OIDC — `always` fails loudly if the OIDC token is
|
|
42
|
+
# absent (rather than silently looking for an API token). uv everywhere.
|
|
43
|
+
# NB: uv publish does not emit PEP 740 attestations (the pypa action would);
|
|
44
|
+
# revisit if attestations become a requirement.
|
|
45
|
+
- name: Publish to PyPI
|
|
46
|
+
run: uv publish --trusted-publishing always
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Secrets
|
|
2
|
+
.env
|
|
3
|
+
|
|
4
|
+
# Local Dolt data — issue data NEVER goes to GitHub
|
|
5
|
+
.dolt-data/
|
|
6
|
+
|
|
7
|
+
# Beads working copy / exports — no issue data on GitHub
|
|
8
|
+
.beads/
|
|
9
|
+
*.jsonl
|
|
10
|
+
backup/
|
|
11
|
+
|
|
12
|
+
# OS / tooling cruft
|
|
13
|
+
.DS_Store
|
|
14
|
+
|
|
15
|
+
# Python / bh build + tooling
|
|
16
|
+
.venv/
|
|
17
|
+
__pycache__/
|
|
18
|
+
*.egg-info/
|
|
19
|
+
dist/
|
|
20
|
+
build/
|
|
21
|
+
.ruff_cache/
|
|
22
|
+
.pytest_cache/
|
|
23
|
+
|
|
24
|
+
# Beads / Dolt files (added by bd init)
|
|
25
|
+
.dolt/
|
|
26
|
+
*.db
|
|
27
|
+
.beads-credential-key
|
|
28
|
+
.beads/proxieddb/
|
|
29
|
+
|
|
30
|
+
# bd agent-integration artifacts (regenerable via `bd setup`; local-only)
|
|
31
|
+
.agents/
|
|
32
|
+
.codex/
|
|
33
|
+
|
|
34
|
+
# .claude: only shared settings.json is tracked. Agents and skills are vended via the bh
|
|
35
|
+
# plugin (beadhive/claude-plugin) — no agent files or skills symlinks are committed here.
|
|
36
|
+
# Local overrides (.claude/agents/<seat>.md) remain untracked and outrank the plugin.
|
|
37
|
+
.claude/**/*.local.json
|
|
38
|
+
.claude/agents/
|
|
39
|
+
.claude/skills
|
|
40
|
+
AGENTS.md
|
|
41
|
+
CLAUDE.md
|
|
42
|
+
|
|
43
|
+
# bv (beads viewer) local config and caches
|
|
44
|
+
.bv/
|
|
45
|
+
|
|
46
|
+
# Planning-plane scratch: molecule specs (bh plan file) + design notes that feed epics
|
|
47
|
+
.planning/
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// markdownlint-cli2 config for `just lint-md`.
|
|
2
|
+
{
|
|
3
|
+
// What to lint (so `markdownlint-cli2` with no args = our docs, not .venv etc.)
|
|
4
|
+
"globs": ["README.md", "docs/**/*.md", "src/beadhive/**/*.md"],
|
|
5
|
+
// AGF-hint.md is a fragment appended into other docs (no standalone H1) — not a doc.
|
|
6
|
+
"ignores": ["src/beadhive/assets/AGF-hint.md"],
|
|
7
|
+
"config": {
|
|
8
|
+
"default": true,
|
|
9
|
+
// Our prose wraps ~92 cols by convention; 80 is needlessly strict. Cap at 100,
|
|
10
|
+
// and don't enforce length inside code blocks or tables (they legitimately run long).
|
|
11
|
+
"MD013": { "line_length": 100, "code_blocks": false, "tables": false },
|
|
12
|
+
// Each integration in INTEGRATIONS.md repeats the same subsection headings
|
|
13
|
+
// (Enabling / What it reads / What it unlocks / Scope & gating) by design; only
|
|
14
|
+
// require heading uniqueness among siblings under one parent, not document-wide.
|
|
15
|
+
"MD024": { "siblings_only": true },
|
|
16
|
+
// Compact tables (`|---|---|`) are our house style; MD060's pipe-spacing rule fights it.
|
|
17
|
+
"MD060": false
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Tool versions for developing beadhive. Install with: mise install
|
|
2
|
+
# (colima, dolt, beads come from the Brewfile — see README for why.)
|
|
3
|
+
[tools]
|
|
4
|
+
python = "3.12"
|
|
5
|
+
uv = "latest"
|
|
6
|
+
just = "1.54.0"
|
|
7
|
+
gh = "2.95.0"
|
|
8
|
+
docker-cli = "29.6.1"
|
|
9
|
+
docker-compose = "5.2.0"
|
|
10
|
+
node = "lts" # for the npm-backed markdown linter
|
|
11
|
+
"npm:markdownlint-cli2" = "latest" # docs linting (just lint-md)
|
beadhive-0.1.0/Brewfile
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Bootstrap + tools mise can't cleanly provide. Run: brew bundle
|
|
2
|
+
#
|
|
3
|
+
# Everything else (just, gh, jq, yq, docker-cli, docker-compose) is pinned in
|
|
4
|
+
# .mise.toml and installed by `mise install`.
|
|
5
|
+
|
|
6
|
+
brew "mise" # tool-version manager — provides everything in .mise.toml
|
|
7
|
+
brew "colima" # Docker daemon/VM for macOS (system deps; not a plain binary)
|
|
8
|
+
brew "dolt" # Dolt CLI — backups, diagnostics, SQL shell (not in mise registry)
|
|
9
|
+
brew "beads" # the `bd` issue tracker (homebrew-core; not in mise registry)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file. The format loosely follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this project has not yet committed to
|
|
5
|
+
a formal versioning cadence beyond [SemVer](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
Headline so far: the **ws → Beadhive (`bh`) rebrand** — same tool, same AGF process, new name
|
|
10
|
+
and package identity to remove the collision with the many other CLIs named `ws`.
|
|
11
|
+
|
|
12
|
+
### Rebrand: ws → Beadhive / `bh`
|
|
13
|
+
|
|
14
|
+
- Python package renamed `ws` → `beadhive`; console scripts renamed `ws`/`ws-mcp` →
|
|
15
|
+
`bh`/`bh-mcp`.
|
|
16
|
+
- Injected/managed asset marker and file layout migrated to the `beadhive`/`bh` naming
|
|
17
|
+
(`bh rig migrate` added to move an existing onboarded rig over in place).
|
|
18
|
+
- MCP resource URI scheme renamed `ws://` → `beadhive://`.
|
|
19
|
+
- Docs, skills, and agent definitions across the AGF plugin swept for the rename; the
|
|
20
|
+
abstract process is now framed as **Beadflow** (an implementation of **AGF** on beads),
|
|
21
|
+
with **Beadhive** as the umbrella product/workspace name.
|
|
22
|
+
- Config/runtime state continues to live under `~/.ws/` (unchanged) — only the package,
|
|
23
|
+
command names, and resource scheme changed; on-disk data and Dolt-backed issue history
|
|
24
|
+
are unaffected.
|
|
25
|
+
- See `docs/design/limn-naming-strategy-adr.md` for the naming decision record and
|
|
26
|
+
`docs/AGF.md` for the AGF/Beadflow process this tool drives.
|
|
27
|
+
|
|
28
|
+
### Notes
|
|
29
|
+
|
|
30
|
+
- An earlier draft of this changelog bumped the package to `1.0.0` and framed it as a first
|
|
31
|
+
public release. That was premature: the project is still under local development and has
|
|
32
|
+
not yet committed to a `1.0.0` SemVer stability promise, so the version has been reverted
|
|
33
|
+
to `0.1.0` pending an actual release decision. The rebrand work above already happened and
|
|
34
|
+
the notes are kept here as a record; only the release framing was walked back. See
|
|
35
|
+
.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
# yaml-language-server: $schema=https://agentguides.io/schemas/0.1/install.schema.json
|
|
3
|
+
install:
|
|
4
|
+
id: beadhive
|
|
5
|
+
summary: Beadhive — the `bh` CLI, the integration-plane driver for Agentic Git Flow (AGF) and cross-repo beads issue tracking.
|
|
6
|
+
methods:
|
|
7
|
+
# Alternatives — pick ONE that fits the user's OS / package manager.
|
|
8
|
+
# Recommended primary: install the `beadhive` package from PyPI so `bh` lands on PATH.
|
|
9
|
+
- kind: package
|
|
10
|
+
manager: uv
|
|
11
|
+
os: [macos, linux]
|
|
12
|
+
command: uv tool install 'beadhive[otel]'
|
|
13
|
+
- kind: package
|
|
14
|
+
manager: homebrew
|
|
15
|
+
os: [macos, linux]
|
|
16
|
+
command: brew install beadhive/tap/beadhive
|
|
17
|
+
- kind: package
|
|
18
|
+
manager: pipx
|
|
19
|
+
command: pipx install 'beadhive[otel]'
|
|
20
|
+
- kind: package
|
|
21
|
+
manager: pip
|
|
22
|
+
command: pip install 'beadhive[otel]'
|
|
23
|
+
verify: bh --version
|
|
24
|
+
# Already installed? Report installed-vs-available and offer the upgrade (with consent).
|
|
25
|
+
upgrade: ask
|
|
26
|
+
configure:
|
|
27
|
+
# Sequential — run in order, asking permission at each step.
|
|
28
|
+
# 1. Scaffold ~/.beadhive (config.yaml + templates). Required, one-time per machine.
|
|
29
|
+
- kind: script
|
|
30
|
+
command: bh config init
|
|
31
|
+
# 2. Claude Code only — register the bh MCP server at user scope
|
|
32
|
+
# (shells out to: claude mcp add bh --scope user -- bh mcp serve).
|
|
33
|
+
- kind: script
|
|
34
|
+
command: bh mcp install
|
|
35
|
+
# 3. Optional, Claude Code only — the bh claude-plugin (AGF seat defs, role skills).
|
|
36
|
+
- kind: plugin
|
|
37
|
+
harness: claude-code
|
|
38
|
+
ref: bh@beadhive
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
# Install Beadhive
|
|
42
|
+
|
|
43
|
+
> This is the repo's real `INSTALL.md`, following the
|
|
44
|
+
> [INSTALL.md convention](https://github.com/agentguides/agentguides). Paste its
|
|
45
|
+
> link into any agent to install Beadhive. A convention-aware agent reads the
|
|
46
|
+
> `install:` frontmatter above; every other agent — and you — can follow the
|
|
47
|
+
> prose below and reach the same result with the same permission prompts.
|
|
48
|
+
|
|
49
|
+
Beadhive is the `bh` CLI (Python package `beadhive`). Installing it is two
|
|
50
|
+
things — a **package install** (puts `bh` on your PATH) and a one-time
|
|
51
|
+
**configure** step (`bh config init`), plus optional Claude Code wiring.
|
|
52
|
+
Whoever is installing (agent or human) should **ask before running each
|
|
53
|
+
command**.
|
|
54
|
+
|
|
55
|
+
## 1. Install `bh` (pick ONE)
|
|
56
|
+
|
|
57
|
+
These are alternatives. Choose the one that matches your setup; you only need one.
|
|
58
|
+
|
|
59
|
+
- **`uv` (recommended, macOS/Linux):**
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
uv tool install 'beadhive[otel]' # puts `bh` on PATH (~/.local/bin)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
- **Homebrew:**
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
brew install beadhive/tap/beadhive
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **`pipx` / `pip`:**
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
pipx install 'beadhive[otel]' # or: pip install 'beadhive[otel]'
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The `[otel]` extra enables OpenTelemetry signals out of the box; drop it if you
|
|
78
|
+
don't want them. The MCP server ships in the core install.
|
|
79
|
+
|
|
80
|
+
## 2. Verify
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
bh --version
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This should print a version. If it does not, `bh` is not on your PATH —
|
|
87
|
+
`uv tool` and `pipx` install to `~/.local/bin`; add it to your shell profile:
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
export PATH="$HOME/.local/bin:$PATH"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 3. Configure
|
|
94
|
+
|
|
95
|
+
Run these in order.
|
|
96
|
+
|
|
97
|
+
1. **Scaffold the config home** (required, one-time per machine). Writes
|
|
98
|
+
`config.yaml` and templates into `~/.beadhive/`:
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
bh config init
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. **Claude Code only — wire the MCP server** at user scope, so planning, work,
|
|
105
|
+
rig, and config tools are available in every session:
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
bh mcp install # runs: claude mcp add bh --scope user -- bh mcp serve
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
3. **Optional, Claude Code only — the `bh` claude-plugin.** Vends the AGF seat
|
|
112
|
+
agent defs and role skills (dispatcher / developer / merger / …):
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
claude plugin marketplace add beadhive/claude-plugin
|
|
116
|
+
claude plugin install bh@beadhive
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
That's it. `bh` is installed, verified, and configured. Next steps:
|
|
120
|
+
[`docs/ONBOARDING.md`](docs/ONBOARDING.md) walks from here to a fully
|
|
121
|
+
configured AGF workspace with registered rigs; [`README.md`](README.md) has the
|
|
122
|
+
overview and docs map.
|
beadhive-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: beadhive
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Beadhive CLI
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Requires-Dist: fastmcp<4,>=3.4
|
|
7
|
+
Requires-Dist: pydantic-settings>=2.11
|
|
8
|
+
Requires-Dist: ruamel-yaml>=0.18
|
|
9
|
+
Requires-Dist: structlog>=24
|
|
10
|
+
Requires-Dist: typer>=0.12
|
|
11
|
+
Provides-Extra: mcp
|
|
12
|
+
Provides-Extra: otel
|
|
13
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.27; extra == 'otel'
|
|
14
|
+
Requires-Dist: opentelemetry-sdk>=1.27; extra == 'otel'
|
|
15
|
+
Requires-Dist: structlog>=24; extra == 'otel'
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# Beadhive (`bh`)
|
|
19
|
+
|
|
20
|
+
`bh` is a single CLI for managing **beads** issue tracking across many repositories. Each
|
|
21
|
+
repo is its own beads database (a **rig**) with a short, stable prefix; `bh` onboards them,
|
|
22
|
+
keeps their labels consistent, runs `bd`/`git` across one or all of them, and aggregates
|
|
23
|
+
every rig into one cross-repo view — even rigs whose code isn't checked out.
|
|
24
|
+
|
|
25
|
+
It's a thin orchestrator over `bd`, `git`, `git-workspace`, `dolt`, and `docker`: `bh`
|
|
26
|
+
encodes the conventions, the registry, validation, and routing. Config and runtime state live
|
|
27
|
+
under `~/.beadhive/`; **no issue data lives there** — each rig's issues live in its own Dolt
|
|
28
|
+
DB under `refs/dolt/data` on that repo's own git remote.
|
|
29
|
+
|
|
30
|
+
`bh` is the **Beadhive** umbrella's workspace CLI — the integration-plane driver for **AGF**
|
|
31
|
+
(Agentic Git Flow), the abstract, tracker-independent process. **Beadflow** is that process
|
|
32
|
+
implemented on beads: this repo's concrete implementation, unchanged behavior under a naming
|
|
33
|
+
layer. See [docs/AGF.md](docs/AGF.md) for the process and
|
|
34
|
+
[docs/design/limn-naming-strategy-adr.md](docs/design/limn-naming-strategy-adr.md) for the
|
|
35
|
+
naming decision record.
|
|
36
|
+
|
|
37
|
+
This repo is the CLI's source (Python package `beadhive` on PyPI, command `bh`).
|
|
38
|
+
|
|
39
|
+
## Install
|
|
40
|
+
|
|
41
|
+
**Agents:** point your agent at [`INSTALL.md`](INSTALL.md) — the preferred install path. It
|
|
42
|
+
carries a structured `install:` frontmatter block (the agent reads it, discloses the plan,
|
|
43
|
+
and asks before each command) plus a prose fallback any agent or human can follow.
|
|
44
|
+
|
|
45
|
+
**Manual** (pick one):
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
uv tool install 'beadhive[otel]' # PyPI (recommended)
|
|
49
|
+
brew install beadhive/tap/beadhive # Homebrew
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then scaffold the config home:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
bh config init # writes config.yaml + templates into ~/.beadhive/
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Optional (Claude Code):** the `bh` claude-plugin vends the AGF seat agent defs and role
|
|
59
|
+
skills; `bh mcp install` wires the MCP server at user scope:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
claude plugin marketplace add beadhive/claude-plugin
|
|
63
|
+
claude plugin install bh@beadhive
|
|
64
|
+
bh mcp install
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Docs
|
|
68
|
+
|
|
69
|
+
New to bh? Start at [`**docs/ONBOARDING.md**`](docs/ONBOARDING.md) — the end-to-end guide
|
|
70
|
+
from fresh Mac to a configured AGF workspace with registered rigs.
|
|
71
|
+
|
|
72
|
+
Everything else — the design and reasoning, configuration, the full command surface, and each
|
|
73
|
+
component — starts at [`**docs/OVERVIEW.md**`](docs/OVERVIEW.md).
|
|
74
|
+
|
|
75
|
+
## Develop
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
just bootstrap # brew bundle + mise install + uv sync (once per machine)
|
|
79
|
+
just install # uv tool install --force '.[otel]' → ~/.local/bin/bh
|
|
80
|
+
just lint # ruff check
|
|
81
|
+
just fmt # ruff format
|
|
82
|
+
just test # pytest
|
|
83
|
+
just build # uv build
|
|
84
|
+
```
|
beadhive-0.1.0/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Beadhive (`bh`)
|
|
2
|
+
|
|
3
|
+
`bh` is a single CLI for managing **beads** issue tracking across many repositories. Each
|
|
4
|
+
repo is its own beads database (a **rig**) with a short, stable prefix; `bh` onboards them,
|
|
5
|
+
keeps their labels consistent, runs `bd`/`git` across one or all of them, and aggregates
|
|
6
|
+
every rig into one cross-repo view — even rigs whose code isn't checked out.
|
|
7
|
+
|
|
8
|
+
It's a thin orchestrator over `bd`, `git`, `git-workspace`, `dolt`, and `docker`: `bh`
|
|
9
|
+
encodes the conventions, the registry, validation, and routing. Config and runtime state live
|
|
10
|
+
under `~/.beadhive/`; **no issue data lives there** — each rig's issues live in its own Dolt
|
|
11
|
+
DB under `refs/dolt/data` on that repo's own git remote.
|
|
12
|
+
|
|
13
|
+
`bh` is the **Beadhive** umbrella's workspace CLI — the integration-plane driver for **AGF**
|
|
14
|
+
(Agentic Git Flow), the abstract, tracker-independent process. **Beadflow** is that process
|
|
15
|
+
implemented on beads: this repo's concrete implementation, unchanged behavior under a naming
|
|
16
|
+
layer. See [docs/AGF.md](docs/AGF.md) for the process and
|
|
17
|
+
[docs/design/limn-naming-strategy-adr.md](docs/design/limn-naming-strategy-adr.md) for the
|
|
18
|
+
naming decision record.
|
|
19
|
+
|
|
20
|
+
This repo is the CLI's source (Python package `beadhive` on PyPI, command `bh`).
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
**Agents:** point your agent at [`INSTALL.md`](INSTALL.md) — the preferred install path. It
|
|
25
|
+
carries a structured `install:` frontmatter block (the agent reads it, discloses the plan,
|
|
26
|
+
and asks before each command) plus a prose fallback any agent or human can follow.
|
|
27
|
+
|
|
28
|
+
**Manual** (pick one):
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
uv tool install 'beadhive[otel]' # PyPI (recommended)
|
|
32
|
+
brew install beadhive/tap/beadhive # Homebrew
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Then scaffold the config home:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
bh config init # writes config.yaml + templates into ~/.beadhive/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Optional (Claude Code):** the `bh` claude-plugin vends the AGF seat agent defs and role
|
|
42
|
+
skills; `bh mcp install` wires the MCP server at user scope:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
claude plugin marketplace add beadhive/claude-plugin
|
|
46
|
+
claude plugin install bh@beadhive
|
|
47
|
+
bh mcp install
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Docs
|
|
51
|
+
|
|
52
|
+
New to bh? Start at [`**docs/ONBOARDING.md**`](docs/ONBOARDING.md) — the end-to-end guide
|
|
53
|
+
from fresh Mac to a configured AGF workspace with registered rigs.
|
|
54
|
+
|
|
55
|
+
Everything else — the design and reasoning, configuration, the full command surface, and each
|
|
56
|
+
component — starts at [`**docs/OVERVIEW.md**`](docs/OVERVIEW.md).
|
|
57
|
+
|
|
58
|
+
## Develop
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
just bootstrap # brew bundle + mise install + uv sync (once per machine)
|
|
62
|
+
just install # uv tool install --force '.[otel]' → ~/.local/bin/bh
|
|
63
|
+
just lint # ruff check
|
|
64
|
+
just fmt # ruff format
|
|
65
|
+
just test # pytest
|
|
66
|
+
just build # uv build
|
|
67
|
+
```
|