Commit Graph

92 Commits

Author SHA1 Message Date
Bryan Frimin
a9ebeef0fa Transform meetings page into context page with tabs
Add structured organization context with 5 markdown sections (Product, Architecture, Team, Processes, Customers) editable inline. Meetings are now a tab within the context page. Moved all GraphQL queries from hooks/graph/MeetingGraph.ts into colocated components following new best practices. Updated database schema, backend services, GraphQL resolvers, and MCP API to support the new context fields and structure.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 19:02:50 +01:00
Sacha Al Himdani
8b66a61990 Run go fix and go fmt
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-19 16:37:51 +01:00
Sacha Al Himdani
1db8e7133e Add document archiving
Documents can be archived and unarchived. Archived documents are
read-only, excluded from the trust center, and moved to a dedicated
Archived tab in the document list.

- Add archived_at timestamp and status (ACTIVE/ARCHIVED) PG enum column
- Rename DocumentStatus → DocumentVersionStatus, introduce DocumentStatus
- Archive/unarchive mutations in GraphQL, MCP, and CLI
- Bulk archive/unarchive mutations with Active/Archived tabs in the list
- ABAC policies: write actions denied on archived docs, unarchive denied
  on active docs
- Remove control/risk mappings and reset trust center visibility on archive
- Exclude archived documents from mapping dialogs and trust center tab

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-19 14:15:54 +01:00
Bryan Frimin
4f54241382 Add document types filtering and rename ISMS to GOVERNANCE
Adds 5 new document types (PLAN, REGISTER, RECORD, REPORT, TEMPLATE), renames ISMS to GOVERNANCE, and implements type-based filtering across GraphQL, MCP, and frontend. Includes migration, enum updates, filter implementation with SQL array support, and frontend dropdown UI with Relay refetch pattern.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 12:31:39 +01:00
Bryan Frimin
d7c120c144 Rename NONCONFORMITY to MINOR_NONCONFORMITY and add MAJOR_NONCONFORMITY
Support distinguishing between minor and major non-conformities in findings. Rename the existing NONCONFORMITY enum value to MINOR_NONCONFORMITY and add a new MAJOR_NONCONFORMITY value across all API layers (GraphQL, MCP, CLI) and the database.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 10:02:28 +01:00
Bryan Frimin
82f241628c Refactor MeasuresPage to use Relay fragments
Replace the client-side grouped-by-category view (fetching 500 items)
with a flat table using server-side filtering and cursor-based
pagination. Colocate GraphQL queries, fragments, and mutations in the
component file per console CLAUDE.md conventions.

Backend changes add a category filter to the measure list endpoints
(GraphQL, MCP) and a new measureCategories field on Organization.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 09:54:33 +01:00
Sacha Al Himdani
16b966b8fb Fix multiline function call style violations
Expand mixed inline/multiline function calls so each argument
is on its own line, matching the one-argument-per-line rule.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-17 15:59:26 +01:00
Bryan Frimin
69ab9c60cd Add finding MCP API
Replace nonconformity and continual improvement MCP tools with
unified finding tools: list_findings, get_finding, create_finding,
update_finding, delete_finding, link_finding_to_audit, and
unlink_finding_from_audit.

Update specification and resolvers to use the new finding types.

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
807213d384 Stop tracking generated files
Run make generate in CI lint and test jobs since generated files are
now gitignored. Also include Relay codegen for frontend apps in the
generate target.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-16 16:19:47 +01:00
Bryan Frimin
7a4101185b Add per-folder CLAUDE.md for key packages
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:27 +01:00
Bryan Frimin
467973e9b6 Fix mcp tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-11 13:09:03 +01:00
Bryan Frimin
0974488fa3 Generate golang code
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-11 13:09:02 +01:00
Bryan Frimin
e393411333 Move kind to string
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-11 13:09:02 +01:00
Émile Ré
17c9f2eded Fix profiles default filter
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-03-10 18:19:16 +04:00
Bryan Frimin
d4b3025463 Use go 1.26 syntax
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-06 15:00:42 +01:00
Émile Ré
909beeb606 Migrate some trust_center_access columns to profiles
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-03-05 10:36:08 +04:00
Sacha Al Himdani
e0de1548d6 Add delete vendor tool on mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-03 15:10:07 +01:00
Sacha Al Himdani
a8ea850af1 Use default filter with no snapshot for mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-03 14:20:18 +01:00
Sacha Al Himdani
21ed4113c3 Go format
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-03 11:17:05 +01:00
Émile Ré
3c70b1e3eb Generate go files after gqlgen & mcpgen upgrades
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-03-03 12:54:43 +04:00
Sacha Al Himdani
f7f65567a2 Add mcp control links
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-26 16:59:32 +01:00
Sacha Al Himdani
ff62eb4a80 Add vendor risk assessment to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-25 16:04:06 +01:00
Sacha Al Himdani
214672b6b5 Add risk and measure mcp tools
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-25 15:50:19 +01:00
Bryan Frimin
16474e0520 Update mcpgen
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-02-23 20:24:47 +01:00
Bryan Frimin
74fa10faea Fix obligation type not updated
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-23 15:43:41 +01:00
Sacha Al Himdani
9b1a3c0c53 Add SOA to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-23 09:36:07 +01:00
Sacha Al Himdani
e0589de2b7 Add mcp bearer header
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-20 20:27:25 +01:00
Sacha Al Himdani
ed21ba763b Add processing activities to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-20 14:43:52 +01:00
Émile Ré
cfcbc0d7e1 Reimplement MCP
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:13:01 +04:00
Émile Ré
47aba96b69 Reimplement invitations
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:58 +04:00
Émile Ré
f931bda10f Reimplement remove and invite user
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:56 +04:00
Sacha Al Himdani
015b6bd6e7 Add delete measure to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-17 18:22:09 +01:00
Sacha Al Himdani
40e4db9278 Remove deprecated SOA code
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-17 15:06:49 +01:00
Bryan Frimin
93c7b0c2dc Add multi-approver support
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-02-17 10:48:44 +01:00
Bryan Frimin
3d8c7c4dd6 Rename owner by approver
Document owner does not make sense it's more an document approver.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-02-17 10:48:43 +01:00
Sacha Al Himdani
90911a55f7 Add delete tasks to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-16 18:35:04 +01:00
Sacha Al Himdani
1d1a0b6208 Add list attendees to mcp meetings
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-16 16:24:12 +01:00
Sacha Al Himdani
3a42307896 Add delete risks to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-16 16:24:12 +01:00
Sacha Al Himdani
8f73e37143 Add meetings to mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-16 16:24:11 +01:00
Émile Ré
adfef480c3 Update MCP
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 16:21:09 +04:00
Sacha Al Himdani
40b53fe1db Suport all vendors fields on mcp
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-02-09 15:44:02 +01:00
Émile Ré
a388aa4999 Redirect when already authenticated
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-05 11:49:33 +04:00
Émile Ré
7c721e5ff7 Refactor DocumentSignaturesTab to DocumentSignaturesPage + fix count bug
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-27 17:52:58 +04:00
Émile Ré
1257347df9 Extract authn & authz utils
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:03 -08:00
Émile Ré
c6094ff572 Implement organization assumption check in authorization layer
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:01 -08:00
Bryan Frimin
63abfe3698 Fix not token secret
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:35:52 -08:00
Bryan Frimin
2615a1eed5 Add permission query
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:25:17 -08:00
Bryan Frimin
092c9aa97c Rename authorize func
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:25:17 -08:00
Bryan Frimin
b7471c97f8 Remove legacy rbac
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:25:16 -08:00