|
1 | | -# A protoAgent plugin BUNDLE (ADR 0040) — a curated, pinned set of plugins installed |
2 | | -# together with one command. Install: python -m server plugin install <this-repo-url> |
| 1 | +# A protoAgent plugin BUNDLE (ADR 0040) — the Portfolio Manager tier of the |
| 2 | +# portfolio→team hierarchy, the manager-of-teams counterpart to the Lead Engineer |
| 3 | +# bundle (github.com/protoLabsAI/leadEngineer). |
| 4 | +# |
| 5 | +# Install: python -m server plugin install <this-repo-url> |
| 6 | +# |
| 7 | +# A Portfolio Manager orchestrates work across MANY Lead Engineer teams: it spins a |
| 8 | +# team up per project (portfolio_spinup_team), dispatches features to it over A2A, |
| 9 | +# rolls up + diffs + sequences cross-board dependencies, and disposes a team once its |
| 10 | +# board drains. It does NOT run a board itself — that's the team tier. |
| 11 | +# |
| 12 | +# So this bundle ENABLES the manager tier (delegates + portfolio) but INSTALLS the |
| 13 | +# team tier too (project_board + agent_browser, off by default): a spawned team's |
| 14 | +# plugins.dir defaults to THIS host's plugins dir, so the team discovers project_board |
| 15 | +# here without a per-team reinstall. Install once, provision many teams. |
3 | 16 | # |
4 | 17 | # PIN LIFECYCLE (ADR 0049): pins are release TAGS and only move through a passing |
5 | 18 | # verify — .github/workflows/verify-bundle.yml installs this manifest into a scratch |
6 | 19 | # agent and probes every declared console view (each PR + weekly), and the scheduled |
7 | 20 | # bump job opens a PR when a member tags a new release. Keep member entries on ONE |
8 | 21 | # line (scripts/check_bundle_updates.py rewrites the `ref:` token in place). |
9 | 22 | id: pm-stack |
10 | | -name: Project Manager Stack |
| 23 | +name: Portfolio Manager |
11 | 24 | description: >- |
12 | | - A board-driven project-management agent stack — beads-backed board orchestration |
13 | | - that decomposes an idea and dispatches coding agents to ship it, a real browser, |
14 | | - and the delegate spine that powers them. Composes three standalone plugins. |
| 25 | + The manager-of-teams tier (ADR 0055). One agent orchestrates work across MANY Lead |
| 26 | + Engineer teams: it spins a team up per project on demand (portfolio_spinup_team), |
| 27 | + dispatches features to each team's board over A2A, rolls up a bounded cross-board |
| 28 | + view, watches for changes, sequences cross-board dependencies, and disposes a team |
| 29 | + once its board drains. It runs no board of its own — the project-team counterpart is |
| 30 | + the Lead Engineer bundle. Enables the manager spine (delegates + portfolio) and |
| 31 | + carries the team plugins (project_board + agent_browser, installed but off) so the |
| 32 | + teams it spawns discover them on this host. The portfolio→team split of the old |
| 33 | + pm-stack. |
15 | 34 |
|
16 | | -# The core version this pin set was last verified against (ADR 0049). The verify |
17 | | -# workflow smokes against protoAgent main; bump this when re-verified on a release. |
18 | | -verified_against: 0.35.3 |
| 35 | +# The core version this exact pin set was last verified against (ADR 0049). The verify |
| 36 | +# workflow checks out this protoAgent ref for the smoke — bump on re-verify. |
| 37 | +verified_against: 0.66.0 |
19 | 38 |
|
20 | 39 | plugins: |
21 | | - - { id: delegates, builtin: true } # ships with protoAgent |
22 | | - - { id: project_board, url: https://github.com/protoLabsAI/projectBoard-plugin, ref: v0.19.0 } |
23 | | - - { id: agent_browser, url: https://github.com/protoLabsAI/agent-browser-plugin, ref: v0.5.1 } |
24 | | - - { id: portfolio, url: https://github.com/protoLabsAI/portfolio-plugin, ref: v0.5.0 } |
25 | | -enabled: [delegates, project_board, agent_browser, portfolio] # suggested turn-on list (you apply it) |
26 | | -config: # recommended defaults (you apply them) |
27 | | - agent_browser: |
28 | | - panel_mode: full |
| 40 | + - { id: delegates, builtin: true } # ACP/A2A spawn spine — ships with protoAgent |
| 41 | + - { id: portfolio, url: https://github.com/protoLabsAI/portfolio-plugin, ref: v0.7.2 } # orchestrate + spawn teams |
| 42 | + - { id: project_board, url: https://github.com/protoLabsAI/projectBoard-plugin, ref: v0.19.0 } # installed-not-enabled: spawned teams' board |
| 43 | + - { id: agent_browser, url: https://github.com/protoLabsAI/agent-browser-plugin, ref: v0.5.1 } # installed-not-enabled: spawned teams' browser |
| 44 | + |
| 45 | +# The PM runs the MANAGER tier only. project_board + agent_browser stay installed-but-off |
| 46 | +# here — they're for the Lead Engineer teams this PM spawns (which discover them via this |
| 47 | +# host's plugins dir), not for the PM itself. |
| 48 | +enabled: [delegates, portfolio] |
| 49 | +config: |
| 50 | + portfolio: |
| 51 | + # The base team config portfolio_spinup_team clones per project. Empty falls back to |
| 52 | + # the portfolio plugin's shipped example (a generic project_board + delegates team); |
| 53 | + # point this at a creds-filled copy (gateway key + model.api_base) so spawned teams |
| 54 | + # run real model turns. {{REPO}} / {{TEAM_NAME}} / {{GATE}} are filled per spawn. |
| 55 | + team_template: "" |
29 | 56 |
|
30 | | -# Agent archetype (ADR 0042) — presents this bundle as a starter "agent type" in the |
31 | | -# new-agent picker. Additive metadata; it doesn't change the bundle shape. |
| 57 | +# Agent archetype (ADR 0042) — presents this bundle as a "Portfolio Manager" agent type |
| 58 | +# in the new-agent picker, with a starting persona. Additive metadata. |
32 | 59 | archetype: |
33 | | - label: Project Manager |
34 | | - icon: LayoutGrid |
35 | | - blurb: Board-driven shipping agent — decomposes an idea and ships it through coding agents. |
| 60 | + label: Portfolio Manager |
| 61 | + icon: Network |
| 62 | + blurb: Orchestrates many engineering teams — spins one up per project, dispatches + rolls up work, disposes it when the board drains. |
| 63 | + soul: | |
| 64 | + # Portfolio Manager |
| 65 | +
|
| 66 | + You are a portfolio manager. You orchestrate work across MANY engineering teams — |
| 67 | + you do not write code or run a board yourself. |
| 68 | +
|
| 69 | + Your loop, per project: |
| 70 | + - Spin up a team for it with `portfolio_spinup_team(name, repo)` — an ephemeral |
| 71 | + Lead Engineer pinned to that repo. Reuse a standing team if one already fits. |
| 72 | + - Dispatch self-sufficient features to its board with `portfolio_dispatch` (give a |
| 73 | + clear spec + acceptance criteria + the files to touch — a vague task ships nothing). |
| 74 | + - Sequence cross-team dependencies with `portfolio_link` + `portfolio_plan` + |
| 75 | + `portfolio_autodispatch`; hold work behind a blocker and release it when that ships. |
| 76 | + - Stay current without polling: `portfolio_watch` once, then read the deltas |
| 77 | + `portfolio_diff` surfaces (merged / blocked / unblocked / new). |
| 78 | + - Dispose a finite project's team when its board drains — `portfolio_autodispose` |
| 79 | + (or `portfolio_teardown_team`). Standing teams you keep. |
| 80 | +
|
| 81 | + Think in terms of OUTCOMES across the portfolio, not individual diffs. Keep each |
| 82 | + team's brief small and shippable, watch the rollup, unblock what's stuck, and report |
| 83 | + progress as features merge to done. |
0 commit comments