Skip to content

Commit 45035e9

Browse files
github-actions[bot]carhartlewistofikwestclaudesemantic-release-bot
authored
[dev] [carhartlewis] lewis/comp-company-tasks (#2128)
* feat(company): add company package and integrate into various apps * feat(app-shell): update company section to tasks and adjust sidebar * feat(documents): add document management features and update routing * style(policy): simplify button formatting and improve layout consistency * feat(documents): add concise form descriptions and refactor usage * docs(openapi): update org chart and evidence forms endpoints * feat(tasks): pass organizationId to PolicyImageUploadModal * feat(tasks): pass organizationId to PolicyImageUploadModal * fix(automation): clarify automation agent's data retrieval capabilities (#2129) Co-authored-by: Tofik Hasanov <annexcies@gmail.com> * fix: policy version API content bug + published version protection (#2130) * fix(api): fix policy version content stored as empty arrays via API class-transformer with enableImplicitConversion was converting TipTap node objects to empty arrays when processing content: unknown[] DTO fields. Added @Transform decorator to preserve raw values. Also: - Block content updates on published policies via PATCH /policies/:id - Align updateVersionContent guard with UI (only block current version when published) - Sync content to current version when updating via PATCH /policies/:id - Add GET /policies/:id/versions/:versionId endpoint - Add Swagger docs for new endpoint Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(app): allow PDF upload/delete on draft policy versions and fix false success toast The upload and delete PDF guards blocked all operations on the current version regardless of policy status. Now only blocks when policy is actually published (matching the pattern used everywhere else). Also fixed PdfViewer onSuccess handlers to check result.data.success before showing the success toast — previously showed "PDF uploaded successfully" even when the server action returned { success: false }. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(api,app): protect current version during needs_review status and fix stale pointer Change version mutation guards from `status === 'published'` to `status !== 'draft'` so that the current version is also protected when the policy is in needs_review state. Fix stale currentVersionId in updateById by reading it inside the transaction. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(api): move status guard inside transaction to prevent concurrent publish bypass The draft-only content guard was reading policy status before the transaction, allowing a concurrent publish to bypass the check. Now the existence check and status guard both run inside the transaction. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Tofik Hasanov <annexcies@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * chore(release): 1.82.3 [skip ci] ## [1.82.3](v1.82.2...v1.82.3) (2026-02-12) ### Bug Fixes * **app:** check DNS records using Node's built-in DNS instead of using external APIs ([#2126](#2126)) ([5fab9bd](5fab9bd)) * **app:** enable capitalized text for role in csv when adding users ([#2123](#2123)) ([5fdb448](5fdb448)) * **automation:** clarify automation agent's data retrieval capabilities ([#2129](#2129)) ([eb2957f](eb2957f)) * policy version API content bug + published version protection ([#2130](#2130)) ([7f79351](7f79351)) * feat(portal): add form visibility toggles and improve form layout Co-authored-by: Cursor <cursoragent@cursor.com> * fix(evidence-forms): add validation for submission status before review * feat(findings): add support for evidence submissions in findings * feat(device-agent): add new device agent package with dependencies * feat(frameworks): add documents score calculation and update compliance overview --------- Co-authored-by: Lewis Carhart <lewis@trycomp.ai> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tofik Hasanov <annexcies@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent c6bc9f9 commit 45035e9

124 files changed

Lines changed: 7331 additions & 1539 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/api/package.json

Lines changed: 128 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,131 @@
11
{
2-
"name": "@comp/api",
3-
"description": "",
4-
"version": "0.0.1",
5-
"author": "",
6-
"dependencies": {
7-
"@ai-sdk/anthropic": "^2.0.53",
8-
"@ai-sdk/groq": "^2.0.32",
9-
"@ai-sdk/openai": "^2.0.65",
10-
"@aws-sdk/client-s3": "^3.859.0",
11-
"@aws-sdk/client-securityhub": "^3.948.0",
12-
"@aws-sdk/client-sts": "^3.948.0",
13-
"@aws-sdk/s3-request-presigner": "^3.859.0",
14-
"@browserbasehq/sdk": "^2.6.0",
15-
"@browserbasehq/stagehand": "^3.0.5",
16-
"@comp/integration-platform": "workspace:*",
17-
"@mendable/firecrawl-js": "^4.9.3",
18-
"@nestjs/common": "^11.0.1",
19-
"@nestjs/config": "^4.0.2",
20-
"@nestjs/core": "^11.0.1",
21-
"@nestjs/platform-express": "^11.1.5",
22-
"@nestjs/swagger": "^11.2.0",
23-
"@nestjs/throttler": "^6.5.0",
24-
"@prisma/client": "6.18.0",
25-
"@prisma/instrumentation": "^6.13.0",
26-
"@react-email/components": "^0.0.41",
27-
"@trigger.dev/build": "4.0.6",
28-
"@trigger.dev/sdk": "4.0.6",
29-
"@trycompai/db": "1.3.22",
30-
"@trycompai/utils": "1.0.0",
31-
"@trycompai/email": "workspace:*",
32-
"@upstash/redis": "^1.34.2",
33-
"@upstash/vector": "^1.2.2",
34-
"adm-zip": "^0.5.16",
35-
"ai": "^5.0.60",
36-
"archiver": "^7.0.1",
37-
"axios": "^1.12.2",
38-
"better-auth": "^1.3.27",
39-
"class-transformer": "^0.5.1",
40-
"class-validator": "^0.14.2",
41-
"dotenv": "^17.2.3",
42-
"esbuild": "^0.27.1",
43-
"exceljs": "^4.4.0",
44-
"express": "^4.21.2",
45-
"helmet": "^8.1.0",
46-
"jose": "^6.0.12",
47-
"jspdf": "^3.0.3",
48-
"mammoth": "^1.8.0",
49-
"nanoid": "^5.1.6",
50-
"pdf-lib": "^1.17.1",
51-
"playwright-core": "^1.57.0",
52-
"prisma": "6.18.0",
53-
"react": "^19.1.1",
54-
"react-dom": "^19.1.0",
55-
"reflect-metadata": "^0.2.2",
56-
"resend": "^6.4.2",
57-
"rxjs": "^7.8.1",
58-
"safe-stable-stringify": "^2.5.0",
59-
"swagger-ui-express": "^5.0.1",
60-
"xlsx": "^0.18.5",
61-
"zod": "^4.0.14"
62-
},
63-
"devDependencies": {
64-
"@eslint/eslintrc": "^3.2.0",
65-
"@eslint/js": "^9.18.0",
66-
"@nestjs/cli": "^11.0.0",
67-
"@nestjs/schematics": "^11.0.0",
68-
"@nestjs/testing": "^11.0.1",
69-
"@types/adm-zip": "^0.5.7",
70-
"@types/archiver": "^6.0.3",
71-
"@types/express": "^5.0.0",
72-
"@types/jest": "^30.0.0",
73-
"@types/multer": "^1.4.12",
74-
"@types/node": "^24.0.3",
75-
"@types/supertest": "^6.0.2",
76-
"@types/swagger-ui-express": "^4.1.8",
77-
"eslint": "^9.18.0",
78-
"eslint-config-prettier": "^10.0.1",
79-
"eslint-plugin-prettier": "^5.2.2",
80-
"globals": "^16.0.0",
81-
"jest": "^30.0.0",
82-
"prettier": "^3.5.3",
83-
"source-map-support": "^0.5.21",
84-
"supertest": "^7.0.0",
85-
"ts-jest": "^29.2.5",
86-
"ts-loader": "^9.5.2",
87-
"ts-node": "^10.9.2",
88-
"tsconfig-paths": "^4.2.0",
89-
"typescript": "^5.8.3",
90-
"typescript-eslint": "^8.20.0"
91-
},
92-
"jest": {
93-
"moduleFileExtensions": [
94-
"js",
95-
"json",
96-
"ts"
97-
],
98-
"rootDir": "src",
99-
"testRegex": ".*\\.spec\\.ts$",
100-
"transform": {
101-
"^.+\\.(t|j)s$": "ts-jest"
2+
"name": "@comp/api",
3+
"description": "",
4+
"version": "0.0.1",
5+
"author": "",
6+
"dependencies": {
7+
"@ai-sdk/anthropic": "^2.0.53",
8+
"@ai-sdk/groq": "^2.0.32",
9+
"@ai-sdk/openai": "^2.0.65",
10+
"@aws-sdk/client-s3": "^3.859.0",
11+
"@aws-sdk/client-securityhub": "^3.948.0",
12+
"@aws-sdk/client-sts": "^3.948.0",
13+
"@aws-sdk/s3-request-presigner": "^3.859.0",
14+
"@browserbasehq/sdk": "^2.6.0",
15+
"@browserbasehq/stagehand": "^3.0.5",
16+
"@comp/company": "workspace:*",
17+
"@comp/integration-platform": "workspace:*",
18+
"@mendable/firecrawl-js": "^4.9.3",
19+
"@nestjs/common": "^11.0.1",
20+
"@nestjs/config": "^4.0.2",
21+
"@nestjs/core": "^11.0.1",
22+
"@nestjs/platform-express": "^11.1.5",
23+
"@nestjs/swagger": "^11.2.0",
24+
"@nestjs/throttler": "^6.5.0",
25+
"@prisma/client": "6.18.0",
26+
"@prisma/instrumentation": "^6.13.0",
27+
"@react-email/components": "^0.0.41",
28+
"@trigger.dev/build": "4.0.6",
29+
"@trigger.dev/sdk": "4.0.6",
30+
"@trycompai/db": "1.3.22",
31+
"@trycompai/email": "workspace:*",
32+
"@upstash/redis": "^1.34.2",
33+
"@upstash/vector": "^1.2.2",
34+
"adm-zip": "^0.5.16",
35+
"ai": "^5.0.60",
36+
"archiver": "^7.0.1",
37+
"axios": "^1.12.2",
38+
"better-auth": "^1.3.27",
39+
"class-transformer": "^0.5.1",
40+
"class-validator": "^0.14.2",
41+
"dotenv": "^17.2.3",
42+
"esbuild": "^0.27.1",
43+
"exceljs": "^4.4.0",
44+
"express": "^4.21.2",
45+
"helmet": "^8.1.0",
46+
"jose": "^6.0.12",
47+
"jspdf": "^3.0.3",
48+
"mammoth": "^1.8.0",
49+
"nanoid": "^5.1.6",
50+
"pdf-lib": "^1.17.1",
51+
"playwright-core": "^1.57.0",
52+
"prisma": "6.18.0",
53+
"react": "^19.1.1",
54+
"react-dom": "^19.1.0",
55+
"reflect-metadata": "^0.2.2",
56+
"resend": "^6.4.2",
57+
"rxjs": "^7.8.1",
58+
"safe-stable-stringify": "^2.5.0",
59+
"swagger-ui-express": "^5.0.1",
60+
"xlsx": "^0.18.5",
61+
"zod": "^4.0.14"
10262
},
103-
"collectCoverageFrom": [
104-
"**/*.(t|j)s"
105-
],
106-
"coverageDirectory": "../coverage",
107-
"testEnvironment": "node"
108-
},
109-
"license": "UNLICENSED",
110-
"private": true,
111-
"scripts": {
112-
"build": "nest build",
113-
"build:docker": "bunx prisma generate && nest build",
114-
"db:generate": "bun run db:getschema && bunx prisma generate",
115-
"db:getschema": "node ../../packages/db/scripts/combine-schemas.js && cp ../../packages/db/dist/schema.prisma prisma/schema.prisma",
116-
"db:migrate": "cd ../../packages/db && bunx prisma migrate dev && cd ../../apps/api",
117-
"deploy:trigger-prod": "npx trigger.dev@4.0.6 deploy",
118-
"dev": "bunx concurrently --kill-others --names \"nest,trigger\" --prefix-colors \"green,blue\" \"nest start --watch\" \"bunx trigger.dev@4.0.6 dev\"",
119-
"dev:nest": "nest start --watch",
120-
"dev:trigger": "bunx trigger.dev@4.0.6 dev",
121-
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
122-
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
123-
"prebuild": "bun run db:generate",
124-
"start": "nest start",
125-
"start:debug": "nest start --debug --watch",
126-
"start:dev": "nest start --watch",
127-
"start:prod": "node dist/main",
128-
"test": "jest",
129-
"test:cov": "jest --coverage",
130-
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
131-
"test:e2e": "jest --config ./test/jest-e2e.json",
132-
"test:watch": "jest --watch",
133-
"typecheck": "tsc --noEmit"
134-
}
63+
"devDependencies": {
64+
"@eslint/eslintrc": "^3.2.0",
65+
"@eslint/js": "^9.18.0",
66+
"@nestjs/cli": "^11.0.0",
67+
"@nestjs/schematics": "^11.0.0",
68+
"@nestjs/testing": "^11.0.1",
69+
"@types/adm-zip": "^0.5.7",
70+
"@types/archiver": "^6.0.3",
71+
"@types/express": "^5.0.0",
72+
"@types/jest": "^30.0.0",
73+
"@types/multer": "^1.4.12",
74+
"@types/node": "^24.0.3",
75+
"@types/supertest": "^6.0.2",
76+
"@types/swagger-ui-express": "^4.1.8",
77+
"eslint": "^9.18.0",
78+
"eslint-config-prettier": "^10.0.1",
79+
"eslint-plugin-prettier": "^5.2.2",
80+
"globals": "^16.0.0",
81+
"jest": "^30.0.0",
82+
"prettier": "^3.5.3",
83+
"source-map-support": "^0.5.21",
84+
"supertest": "^7.0.0",
85+
"ts-jest": "^29.2.5",
86+
"ts-loader": "^9.5.2",
87+
"ts-node": "^10.9.2",
88+
"tsconfig-paths": "^4.2.0",
89+
"typescript": "^5.8.3",
90+
"typescript-eslint": "^8.20.0"
91+
},
92+
"jest": {
93+
"moduleFileExtensions": [
94+
"js", "json", "ts"
95+
],
96+
"rootDir": "src",
97+
"testRegex": ".*\\.spec\\.ts$",
98+
"transform": {
99+
"^.+\\.(t|j)s$": "ts-jest"
100+
},
101+
"collectCoverageFrom": ["**/*.(t|j)s"],
102+
"coverageDirectory": "../coverage",
103+
"testEnvironment": "node"
104+
},
105+
"license": "UNLICENSED",
106+
"private": true,
107+
"scripts": {
108+
"build": "nest build",
109+
"build:docker": "bunx prisma generate && nest build",
110+
"db:generate": "bun run db:getschema && bunx prisma generate",
111+
"db:getschema": "node ../../packages/db/scripts/combine-schemas.js && cp ../../packages/db/dist/schema.prisma prisma/schema.prisma",
112+
"db:migrate": "cd ../../packages/db && bunx prisma migrate dev && cd ../../apps/api",
113+
"deploy:trigger-prod": "npx trigger.dev@4.0.6 deploy",
114+
"dev": "bunx concurrently --kill-others --names \"nest,trigger\" --prefix-colors \"green,blue\" \"nest start --watch\" \"bunx trigger.dev@4.0.6 dev\"",
115+
"dev:nest": "nest start --watch",
116+
"dev:trigger": "bunx trigger.dev@4.0.6 dev",
117+
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
118+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
119+
"prebuild": "bun run db:generate",
120+
"start": "nest start",
121+
"start:debug": "nest start --debug --watch",
122+
"start:dev": "nest start --watch",
123+
"start:prod": "node dist/main",
124+
"test": "jest",
125+
"test:cov": "jest --coverage",
126+
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
127+
"test:e2e": "jest --config ./test/jest-e2e.json",
128+
"test:watch": "jest --watch",
129+
"typecheck": "tsc --noEmit"
130+
}
135131
}

apps/api/src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { TaskManagementModule } from './task-management/task-management.module';
3535
import { AssistantChatModule } from './assistant-chat/assistant-chat.module';
3636
import { OrgChartModule } from './org-chart/org-chart.module';
3737
import { TrainingModule } from './training/training.module';
38+
import { EvidenceFormsModule } from './evidence-forms/evidence-forms.module';
3839

3940
@Module({
4041
imports: [
@@ -82,6 +83,7 @@ import { TrainingModule } from './training/training.module';
8283
AssistantChatModule,
8384
TrainingModule,
8485
OrgChartModule,
86+
EvidenceFormsModule,
8587
],
8688
controllers: [AppController],
8789
providers: [

0 commit comments

Comments
 (0)