Conversation
Adds read-only `observe rbac` commands ported from the deprecated Go CLI: - `rbac dot --user <id>` / `rbac dot --all`: GraphViz DOT graphs of the relationships between users, groups, and statements (mirrors cmd_rbac_dot.go). - `rbac group list` / `rbac group get <id>` (with optional --members), and `rbac statement list`: read-only listing/getting with --format json|csv. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
beengud
pushed a commit
that referenced
this pull request
Jul 1, 2026
…d commands Migrate board, folder, opal, fleet, schema, worksheet, and dataset command files from direct buildCommand/buildRouteMap to the defineCommand/defineRoutes wrappers introduced upstream in #14 (OBSERVE_CLI_EXPERIMENTAL gating). Drop-in replacements; no behavior change. Aligns our ported commands with the new house convention (AGENTS.md) and reduces future rebase friction.
beengud
added a commit
that referenced
this pull request
Jul 1, 2026
Migrate ported commands from buildCommand/buildRouteMap to the defineCommand/defineRoutes wrappers (upstream #14). Drop-in, no behavior change. Gitignore *.bun-build artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #9
Ports the RBAC read surface and the
rbac-dotrelationship graph from the deprecated Go Observe CLI into the TypeScript CLI, grouped underobserve rbac.Ported surface
observe rbac dot --user <id>— GraphViz DOT of a single user's transitive group membership (mirrorsplotUserGroupsDot/recursivePlotGroups).observe rbac dot --all— full-connectivity DOT across all users, groups, and statements, laid out in three clusters with the same node shapes, cluster colors, and edge weights as the Go output (mirrorsplotFullConnectivityDot/dotStmtName). Pipe todot, e.g.observe rbac dot --all | dot -Tsvg -o rbac.svg.observe rbac group list/observe rbac group get <id>(optional--members) — read-only group + member access.observe rbac statement list— read-only statement access.List/get commands support
--format json|csv(JSON default);dotemits DOT text. Scope is READ + DOT only; no mutations.GraphQL ops live in
src/gql/rbac/(validated against the published SDL), commands insrc/commands/rbac/. Route registered insrc/app.ts(afterdatastream-token, beforecli).Field-name corrections vs the Go source
subject.*/object.*into struct fields (SubjectUser,ObjectObjectId, ...) via a query remap. The published schema exposes them as nestedRbacSubject/RbacObjectobjects, so the ported queries selectsubject { userId groupId all }andobject { objectId folderId workspaceId type name owner all }and the DOT builder reads the nested shape.UserIdscalar (string), notint64as in the Go structs. DOT node IDs and membership comparisons use strings accordingly.RbacStatement.roleis theRbacRoleenum, not a free-form string.currentCustomer.users { id, label, email, status, role }(aliasedlabel->name);currentCustomeris nullable in the SDL, so the wrapper guards it.Verification
src/gql/rbac/**):✔ Generate.tsc --noEmit: zero errors insrc/commands/rbacandsrc/gql/rbacnon-test sources (only the documentedbun:test/ImportMetanoise remains, which is expected).bun test src/commands/rbac/: 18 pass / 0 fail across 3 files.eslint+prettierclean on the new sources.🤖 Generated with Claude Code