Commit Graph

56 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
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
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
467973e9b6 Fix mcp tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-11 13:09:03 +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é
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
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
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
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
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
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é
7c721e5ff7 Refactor DocumentSignaturesTab to DocumentSignaturesPage + fix count bug
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-27 17:52:58 +04:00
Sacha Al Himdani
4ed3f5a067 Change state of applicability
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-01-16 22:56:00 +01:00
Sacha Al Himdani
3c2be844e4 Remove mandatory task from measure
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-01-15 18:15:45 +01:00
Émile Ré
c0b2a5702d Introduce pkg/mail.Addr
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-15 18:24:00 +01:00
Sacha Al Himdani
3169fa3c0a Fix audit and framework deletion
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-12-09 17:34:50 +01:00
Bryan Frimin
89af9f806a Add updatePeople tool
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-26 09:11:45 +01:00
Bryan Frimin
af03a83f9b Add document and document version tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-25 15:42:25 +01:00
Bryan Frimin
b1e1127392 Add mcp hint support
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-25 11:27:52 +01:00
Bryan Frimin
927ad89a0c Add snapshot tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 16:34:29 +01:00
Bryan Frimin
66484113d3 Add tasks tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 16:23:08 +01:00
Bryan Frimin
0d985b40cc Add control mapping tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 15:00:18 +01:00
Bryan Frimin
0192586d4e Add control tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 13:58:02 +01:00
Bryan Frimin
d8abb230b8 Add audit mcp tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 10:23:30 +01:00
Bryan Frimin
2d722700d6 Make status and priority optional
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-24 10:23:30 +01:00
Bryan Frimin
e4438302f9 Fix mcp order type
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 23:21:37 +01:00
Bryan Frimin
c9e1fd54a5 Fix risks encoding
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 22:28:29 +01:00
Bryan Frimin
112c793328 Add continious improvment tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:55:00 +01:00
Bryan Frimin
1b52585ab2 Add obligation tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:49:00 +01:00
Bryan Frimin
dbf75ef759 Add nonconformity tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:41:07 +01:00
Bryan Frimin
947b621eb5 Add data tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:31:04 +01:00
Bryan Frimin
5917c6a17b Add assets tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:19:39 +01:00
Bryan Frimin
72a6d33535 Add framework tools
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-23 21:08:55 +01:00