feat(agent): CLI set-level + MCP propose-action — finish the non-dashboard #784 surfaces - #854
Conversation
…board #784 surfaces Completes the CLI + MCP control deliverables of #784 (the dashboard slice stays with contributor PR #831; this issue is advanced, not finished here): CLI (packages/gittensory-mcp): maintain set-level <action> <level> --repo o/r — read-merge-write so one autonomy class is updated without clearing the others; validates action/level against the autonomy dial; wired into dispatch + completion + help. MCP (src/mcp/server.ts): gittensory_propose_action(owner, repo, pullNumber, actionClass, [params]) — a maintainer stages a PR action into the approval queue (#779) as auto_with_approval; it never auto-executes (a maintainer accepts/rejects via the queue). Gated by a new requireRepoManageAccess (maintainer/owner/operator scope) — stricter than the read-only requireRepoAccess; private-token/static identities trusted. Tests: set-level merge + validation; propose stages an action (idempotent), carries action params, allows an owning-maintainer session, forbids a non-maintainer session, and errors when the App is not installed. New code 100% covered; MCP meta-tests green; full suite green (2131). (MCP CHANGELOG regenerates at mcp-release time, not per-PR.)
|
Note Gittensory Gate skippedPR closed before full evaluation. No late first comment was created.
💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers. |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #854 +/- ##
==========================================
+ Coverage 96.68% 96.70% +0.01%
==========================================
Files 108 108
Lines 14621 14642 +21
Branches 5290 5299 +9
==========================================
+ Hits 14137 14160 +23
+ Misses 105 102 -3
- Partials 379 380 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
gittensory · advisory review Reviewed 5 changed file(s) — two independent AI reviewers. Changed files: Suggested action: ✅ Safe to merge — both reviewers found no blocking issues. Reviewer A · Suggestions
Worth double-checking
Reviewer B · Suggestions
Worth double-checking
|
Advances #784 (the remaining CLI + MCP control deliverables; the dashboard slice stays with contributor PR #831).
What & why
With the MCP read tool (#851) and the CLI
maintaincontrols (#852) already merged, this completes the CLI and MCP control surfaces of #784:CLI —
maintain set-level <action> <level> --repo o/rSets the autonomy level for one action class. Read-merge-write, so it updates one class without clearing the others; validates
action(review/request_changes/approve/merge/close/label) andlevel(observe/…/auto) against the dial. Wired into the dispatch + completion registry +maintain --help.MCP —
gittensory_propose_action(owner, repo, pullNumber, actionClass, [params])A maintainer stages a PR action into the approval queue (#779) as
auto_with_approval— it never auto-executes; a maintainer accepts/rejects it via the queue. Gated by a newrequireRepoManageAccess(maintainer/owner/operator scope) — stricter than the read-onlyrequireRepoAccess; private-token/static identities are trusted.Scope
This is the CLI + MCP half of #784. The dashboard approval-queue panel is contributor territory (it reuses #831's
AuditFeedcomponent + touches the same shell/route files), so it's left for #831's lane. #784 stays open until that lands.Tests
set-level(merge + validation),propose_action(stages an action idempotently, carries action params, allows an owning-maintainer session, forbids a non-maintainer session, errors when the App isn't installed). New code 100% covered; MCP discovery/output-schema meta-tests green; full suite green (2131). The MCP CHANGELOG regenerates at mcp-release time (not a per-PR gate).