Commit Graph

20 Commits

Author SHA1 Message Date
Bryan Frimin
042fd29e93 Handle case-insensitive URI schemes in host normalization
URI schemes are case-insensitive per RFC 3986, so HTTP:// and HTTPS://
must also be recognized when checking for existing schemes.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 17:28:05 +01:00
Bryan Frimin
0f1fc2f069 Fix CLI URL scheme handling when using http:// addresses
The browse command and config loading were incorrectly prepending https:// to hosts that already had a scheme, resulting in malformed URLs like https://http://localhost:8080. Added normalizeHost() function to strip URL schemes when loading config, and added scheme detection in the browse command before prepending https://.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 17:19:44 +01:00
Bryan Frimin
ad0cf38e76 Add finding CLI commands
Add prb finding subcommands: create, list, view, update, and delete.
Register the finding command group in the root command and update
the factory to expose FindingService.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 15:05:32 +01:00
Sacha Al Himdani
cf1dadc0b5 Add implemented state and justification to controls
Introduce `implemented` enum (IMPLEMENTED/NOT_IMPLEMENTED) and
`not_implemented_justification` (nullable text) fields on the Control
entity across all API surfaces (GraphQL, MCP, CLI), database, frontend,
and SOA export.

The database stores implementation state as a PostgreSQL enum
`control_implementation_state`. Controls default to IMPLEMENTED during
migration. The SOA list and PDF export show implementation status
alongside applicability, with "-" for non-applicable controls.
Justification columns are renamed for clarity: "Justification for
non-applicability" and "Justification for non-implementation".

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-17 11:01:04 +01:00
Bryan Frimin
364c193d33 Style
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 17:19:02 +01:00
Bryan Frimin
842bbfbe97 Style
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 16:54:48 +01:00
Bryan Frimin
7e86d2c89f Rename proboctl CLI binary to prb
Shorter CLI name for faster typing. Renames the binary, build targets,
goreleaser config, command examples, and documentation.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:51 +01:00
Bryan Frimin
1f1df63676 Add proboctl CLI AGENTS.md
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:51 +01:00
Bryan Frimin
779f549530 Fix missing __typename checks and standalone var declarations
Add __typename to GraphQL queries and type guards in risk view,
risk list, user view, and user list commands to prevent silent
garbage output when a wrong node type ID is passed. Wrap
standalone var declarations in var () blocks per style guide.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:50 +01:00
Bryan Frimin
0438b8457d Clear active host on logout
When logging out of the active host while other hosts exist,
the stale ActiveHost reference caused DefaultHost() to silently
fall through to the first alphabetical host instead of treating
the user as logged out.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:50 +01:00
Bryan Frimin
a8ac1fa2a1 Add proboctl webhook commands
Add CRUD commands for webhook subscriptions and a command
to list webhook events.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:50 +01:00
Bryan Frimin
f1a028c4f1 Add proboctl statement of applicability commands
Add CRUD commands for statements of applicability and their
applicability statements (add, list, remove, update).

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:50 +01:00
Bryan Frimin
04cb9e08fb Add proboctl framework and control commands
Add create, list, view, update, and delete commands
for managing frameworks and controls.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:49 +01:00
Bryan Frimin
5a230278b2 Add proboctl risk commands
Add create, list, view, update, and delete commands
for managing risks.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:49 +01:00
Bryan Frimin
b313fbb951 Add proboctl org and user commands
Add organization list and user list/view commands.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:49 +01:00
Bryan Frimin
72c15b2a17 Add proboctl browse command
Add a command to open Probo resources in the web browser.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:49 +01:00
Bryan Frimin
94673d4ee2 Add proboctl config commands
Add get, set, and list commands for managing CLI
configuration values.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:48 +01:00
Bryan Frimin
907ba623e8 Add proboctl api command
Add a raw API command for executing GraphQL queries
directly against the Probo API.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:48 +01:00
Bryan Frimin
95d83872bc Add proboctl auth commands
Add login, logout, and status commands for managing
authentication with the Probo API.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:48 +01:00
Bryan Frimin
6919b9372a Add proboctl core skeleton and build system
Introduce the proboctl CLI entry point, root command, version,
completion, iostreams, shared cmdutil helpers (flags, table, JSON,
time formatting), API client with pagination, config management,
goreleaser configuration, and build system integration.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 15:41:47 +01:00