/home/techb158/balavpn.abdallabala.com/.git
NameSizeModeActions
hooks/-0755rm
info/-0755rm
logs/-0755rm
objects/-0755rm
refs/-0755rm
COMMIT_EDITMSG400644editdlrm
config2070644editdlrm
description730644editdlrm
FETCH_HEAD2200644editdlrm
HEAD230644editdlrm
index230360644editdlrm
ORIG_HEAD410644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/.git/index (23036B)
DIRCjM>jM>auUZo߫@ .dockerignorejOGQjOGQN\ K>Al:, .env.examplejM--jM--;zo*;Q$3Yc.env.productionjM>jM><MB0lJf=d'PI.github/workflows/deploy.ymljM> jM> <J,jqK M3] .gitignorejNq+LgjNq+Lg<:"i!_5v jtbU DockerfilejM>T6jM>T6T6jM>T6<57w^a]GF ɥ"deploy/cosmic-ai-risk-saas.servicejM>T6jM>T6<6k(L],(5h<7deploy/nginx.confjM>T6jM>T6<nٓ%%'}*!docker-compose.monitoring.ymljMT~7jMT~7<7 HNS =ŮHAdYdocker-compose.prod.ymljM>(njM>(n<8T WUH`?t3odocker-compose.supabase.ymljM>(njM>(n<9+Kr*y(vdocker-compose.ymljNA jNA k^94qCs@j8$docs/00-design-study.mdjNA jNA .]Eȸ%|juaRdocs/01-uml-class-diagram.pumljNA&WjNA&W֐I] i\25docs/02-use-case-diagram.pumljNA&WjNA&W&"?`i}[ docs/03-sequence-diagrams.pumljNA&WjNA&WεQRH4Hrbdu+!docs/04-database-entity-model.mmdjNA&WjNA&W4 in@bls4"docs/14-step-7-reporting-export.mdjNAhjNAhgeuhGi%E)docs/15-step-7-1-oauth-live-connectors.mdjNAhjNAh 䐮u2T`a+docs/16-step-8-user-roles-access-control.mdjNAhjNAh#0VT,K_0docs/17-step-9-production-deployment-security.mdjNAhjNAh :ȽҖ9׬oO,docs/18-step-10-final-academic-submission.mdjNAjNA=#``w docs/19-final-report-draft.mdjNAjNA75'I$xh:y*docs/20-instructor-submission-checklist.mdjNAjNAlRC+< *8Lb%adocs/21-demo-script.mdjNAjNAWh=%6 docs/22-traceability-matrix.mdjNAjNA B0U<´K[docs/23-testing-evidence.mdjNAjNA ^uGVf= N'擎}}$docs/24-evaluation-rubric-mapping.mdjNAjNA ;lfԶIMޓ#docs/25-final-deployment-runbook.mdjNAjNA Hb*Dej8o8,docs/26-known-limitations-and-future-work.mdjNAjNA MI0?<a0=MQ#docs/27-final-qa-checklist.mdjNAjNA"b|&4G'N[$]x ~ docs/28-demo-rehearsal-script.mdjNAjNA ё #'+B] F<õ#docs/29-submission-freeze-report.mdjNAjNATFVdgy`xGdocs/30-final-known-issues.mdjNAjNA (-N#ɏ&docs/31-saas-rebuild-implementation.mdjM>7إjM>7إSk{28%lDsL)@o!docs/application-documentation.mdjO jO )HG* HrNQ"xA{Jdocs/conversation-log.mdjNAjNAk3J< j kfhdocs/dashboard-spec.mdjM>GjM>Go(M JӒ9}pMndocs/database-guide.mdjM>GjM>Gp~Qo̴7M-xkdocs/development-summary.mdjNAjNA$gqXؔuXSt29docs/github-architecture.svgjM>GjM>G<;_,^V]jM>V]V]jM>V]<@ۙ56<'@yfnext.config.mjsjM>tjM>t3\hs_A, !prisma/import-project.jsjOG=jOG=Bfv=Q$Iprisma/list-projects.jsjNt '1jNt '1#jM>#<OTز`q6:Uscripts/backup-db.shjM>#jM>##jM>#ejM>e<1-r!#Np6!uh scripts/run-scheduled-reports.jsjM>ejM>e< ^.ʴ 7&Jbscripts/setup-backup-cron.shjM>ejM>el**(src/app/api/admin/organizations/route.jsjU":jU":'wtǫdtv⭖TN}a,src/app/api/admin/super-admins/[id]/route.jsjU" rjU" r'wcs\I}r $'ZB'src/app/api/admin/super-admins/route.jsjU"ΐjU"ΐ'w I<]O?e륬Y#< src/app/api/admin/users/route.jsjU"ΐjU"ΐ'wgd6kU1|3'src/app/api/auth/accept-invite/route.jsjU"NjU"N'w' T}П4HD% src/app/api/auth/invite/route.jsjU"NjU"N'wG9+(mL]src/app/api/auth/login/route.jsjU"NjU"N'wf˥\?)< #f* src/app/api/auth/logout/route.jsjU"NjU"N'w]^n橤d src/app/api/auth/me/route.jsjU"WjU"W'wR'.ju>!src/app/api/auth/session/route.jsjU# jU# 'w^ wM$x\o src/app/api/auth/signup/route.jsjU# jU# 'w аf8//lL9lx&src/app/api/auth/sso/callback/route.jsjU# jU# 'w|؉Rυ$/Ogsrc/app/api/auth/sso/route.jsjU# jU# 'wA8wBs©#nF(%src/app/api/billing/checkout/route.jsjU# jU# 'w6lY*ЛӋ38#src/app/api/billing/portal/route.jsjU# jU# 'w~^{@4+fx)src/app/api/billing/subscription/route.jsjU#jU#'wES鉖YA@$src/app/api/billing/webhook/route.jsjU#jU#'wƗoxFE$wN {0src/app/api/gate-criteria/[criterionId]/route.jsjU#jU#'w2u7cRiHp"9BY-src/app/api/gates/[gateId]/decisions/route.jsjU#jU#'wNjWP,m@6^src/app/api/health/route.jsjU#jU#'wyߕFE'6˫*src/app/api/integration-providers/route.jsjU#*+jU#*+'wߟducTVQ:src/app/api/integrations/[integrationId]/discover/route.jsjU#*+jU#*+'wPEo.YB%5Z;src/app/api/integrations/[integrationId]/live/sync/route.jsjU#*+jU#*+'w47Wɯ\u! uF= ;src/app/api/integrations/[integrationId]/live/test/route.jsjU#9`bjU#9`b'w &r]KSyA1src/app/api/integrations/[integrationId]/route.jsjU#9`bjU#9`b'w=0 WQ>3k߀j6src/app/api/integrations/[integrationId]/sync/route.jsjU#9`bjU#9`b'wޮ[MMЙsrc/app/api/metrics/route.jsjU#HjU#H'w v7qAX8src/app/api/mitigations/[mitigationId]/evidence/route.jsjU#HjU#H'w ۦM2ceFIuCTY>/src/app/api/mitigations/[mitigationId]/route.jsjU#g'jU#g''w*%Zk> IaJsrc/app/api/organizations/[organizationId]/members/[membershipId]/route.jsjU#vi?jU#vi?'w.N<'`2R$w;src/app/api/organizations/[organizationId]/members/route.jsjU#vi?jU#vi?'wΎ4V̴۬5ِ%T"src/app/api/organizations/route.jsjU#vi?jU#vi?'w""d m\r6òM/src/app/api/projects/[projectId]/audit/route.jsjU#vi?jU#vi?'w \xls&~5_3src/app/api/projects/[projectId]/dashboard/route.jsjU#vjU#v'w:f,l4b&Yd+ Wsrc/app/api/projects/[projectId]/experiments/[experimentId]/metrics/[metricId]/route.jsjU#jU#'w"MۂJ+g N=Lsrc/app/api/projects/[projectId]/experiments/[experimentId]/metrics/route.jsjU#/jU#/'wYUUCmDsrc/app/api/projects/[projectId]/experiments/[experimentId]/route.jsjU#´SjU#´S'w/R 80] У>pZ5src/app/api/projects/[projectId]/experiments/route.jsjU#´SjU#´S'w>R'M0og{i7src/app/api/projects/[projectId]/gate/evaluate/route.jsjU#´SjU#´S'wq$2'z}|ͭM6src/app/api/projects/[projectId]/gate/history/route.jsjU#jU#'w7X6ӕEk3"lAśadBsrc/app/api/projects/[projectId]/indicators/[indicatorId]/route.jsjU#jU#'x1ΫŸӈ4src/app/api/projects/[projectId]/indicators/route.jsjU#jU#'xC{$PHAiK5src/app/api/projects/[projectId]/mitigations/route.jsjU#zjU#z'x|z!Ai>SwxACsrc/app/api/projects/[projectId]/report-exports/[exportId]/route.jsjU#0jU#0'x}7NFe#/Z8src/app/api/projects/[projectId]/report-exports/route.jsjU#0jU#0'x:oAI,!HtWew>src/app/api/projects/[projectId]/reports/[reportType]/route.jsjU#0jU#0'xm0Cfm'GH>Musrc/app/dashboard/layout.jsxjU$jjU$j'xZ7 sͯZd8gsrc/app/dashboard/page.jsxjU$!jU$!'x)_8']0A}N:=src/app/globals.cssjU$!jU$!'xfd:*kTayD݅-src/app/integrations/[integrationId]/page.jsxjU$jU$'x3AU6m;m/G c)src/app/integrations/layout.jsxjU$jU$'x';-(;a"/ aosrc/app/layout.jsxjU$jU$'xe] ![ųHʄئWPsrc/app/login/page.jsxjU$jU$'x <&i!ZUwsrc/app/page.jsxjU$jU$'x `ߖM}GI"o"k$Jsrc/app/signup/page.jsxjU$jU$'x 0I쩻~aO{{k5rel"Jsrc/components/AppShell.jsxjU$jU$'xp&36 纆!'Ѫ src/components/ErrorBoundary.jsxjU$jU$'xpcNz z2<;src/components/LogoutButton.jsxjU$jU$'x cFv9L*src/integrations/pm-clients/http-client.jsjU%"jU%"'x%d7P}2+Z@;亁$src/integrations/pm-clients/index.jsjU%ejU%e'x& 9㐤¸@a*src/integrations/pm-clients/jira-client.jsjU%0jU%0'x' =\b!DWM-src/integrations/pm-clients/planner-client.jsjU%0jU%0'x(sOrJ:Z-kˈ,src/integrations/pm-clients/trello-client.jsjU%@+jU%@+'x):H7%10PQwwvEsrc/lib/api-client.jsjU%@+jU%@+'x*P43`ܬ~Fo: src/lib/crypto.jsjU%@+jU%@+'x+pz`TA`ۗ_Ksrc/lib/email.jsjU%@+jU%@+'x,3Zn&48XLUsrc/lib/http.jsjU%OmjU%Om'x-::P}4/ū>VKsrc/lib/idempotency.jsjU%OmjU%Om'x.%TKEsĕ~src/lib/metrics.jsjU%OmjU%Om'x/¹Iӊ _K g6 f2tsrc/services/sso-service.jsjOGXjOGX"0Z`R}\}+#t`Utests/idempotency.test.jsjM>!o[jM>!o["g! }rŏODo!tests/integration-service.test.jsjOw' )jOw' )"0[.I9uPWq{tests/live-pm-clients.test.jsjM.QjM.Q"g"5#wk^tests/local-server.test.jsjM>!jM>!"g#"8d{ Vt^ ftests/metrics.test.jsjM>!jM>!"g$ ?G LH}p;0ktests/oidc.test.jsjM>!jM>!"g%+D??ʉފ\tests/rate-limit.test.jsjM>!jM>!"g& A6,rڎlQtests/saas-domain.test.jsjM>!jM>!"g'*);t=X0tests/tenant-security.test.jsTREE 194 8 :־yR?dMsrc106 6 a;H+Uz8ketapp71 6 pB/.XZ׆api61 16 UpC鄏lzYauth9 8 Mۦ_.|]iUP$me1 0 i75;`>'Ԅsso2 1 `izt5;C!callback1 0 z71x~ks'_Qlogin1 0 MYR*H$!I|@dinvite1 0 @M slogout1 0 WCܺ0WRsignup1 0 *= –٘s!|session1 0 7U ױq9accept-invite1 0 .m%IbOadmin5 4 '$KKvjy<0Ausers1 0 1v-ڌXf6-org-access1 0 TeZДS:cLKq|super-admins2 1 c ,ծ /:WPD[id]1 0 E6 r*zorganizations1 0 @͍PQTJ0 gates1 1 6j#/o+\8J[gateId]1 1 rnɾ3tJI鱬decisions1 0 KY[C3ready1 0 wc#)lQsrisks2 1 O )\hfp[riskId]2 1 /Z Y߂@?~`ILmitigations1 0 *Eײ ٹi<roles1 0 .rX+Ahhealth1 0 FZ[Ju billing4 4 D$Knjd.portal1 0 GXT1evwebhook1 0 aGbyVqPcheckout1 0 ('FyfDRvqsubscription1 0 jFQˮb\5_~gate2 2 pFD(.< Y[-D history1 0 cg܃\?+pxLevaluate1 0 å>B*audit1 0 {gz47<%Ͳ82"risks1 0 3f^Ύx,6Qreports1 1 3o H-i~{_[reportType]1 0 jkdashboard1 0 p#S\FN6E,indicators2 1 ^ꅬkGTwRnPaNy[indicatorId]1 0 Sj&kS&&HYexperiments4 1 lGZNc}iG[experimentId]3 1 jbxiZ3402 wmetrics2 1 hǨ,TŅAH"S~[metricId]1 0 ]$Dg33zm=f7mitigations1 0 9\/5`Y熯2Yreport-exports2 1 5Gi4r([exportId]1 0 pɐ/xscheduled-reports2 1 WT9 -4; [scheduledReportId]1 0 s|9qworkspaces6 1 +rtNacQuRP[workspaceId]5 4 @ VVw -P`Aprojects1 0 Q@-A!s*b;sync-runs1 0 Jh-L֖&xy{m{'integrations1 0 I+/vfHsI8integration-mappings1 0 \E8̿mitigations2 1 x{C6J65gc[mitigationId]2 1 zZP !:|evidence1 0 ;HxąwCVy}integrations5 1 2p2Q/b$u\<%[integrationId]5 3 .AP܎o앢!QFlive2 2 b``hvsync1 0 \`BC~ች:test1 0 /{ƒґ*]>\w~sync1 0 ]ϞNjy W9discover1 0 q䰮{^HUj~gate-criteria1 1 je>ɫdݜ~r]1w[criterionId]1 0 O^U*2%1Ч0ˍ'Yorganizations3 1 ?wk!yJiAx-[organizationId]2 1 {ؒhn/ƖV=members2 1 9K͜-8U![membershipId]1 0 F% e9K%$integration-providers1 0 z^6$"oʸWOn Ӱlogin1 0 ,k~~^u-/]47@signup1 0 a`4DPWa@dashboard2 0 x DԿJ6T‘fPintegrations2 1 Qn8&X9MӇ}T[integrationId]1 0 .>Z{e&~_)"accept-invite1 0 jnRfT3ɬʺlib12 0 ?V9sr)jdomain4 0 dkeo63EFJservices9 0 VۆxaNx7KMlcomponents3 0 jvI%c Oqintegrations6 1 x7x#~Wpm-clients6 0 |ʋ杶*zXdocs38 0 n?`Գ7wF{jtests9 0 -DlqkNmc$|rǐ deploy2 0 v#H`prisma10 0 .]WPؽOp^׻.github1 1 3jUacOA Vworkflows1 0 7J@D^4Pelscripts10 0 2/src2 1 cvӟaZΜT:app2 2 Q%6a?ș api1 1 Qp4`U1̱eintegrations1 1 0_m;J4k[integrationId]1 0 K.(ySFssR0 Mintegrations1 1 x?{O[aBi[integrationId]1 0 .>Z{e&~_)"h*ؙnG[BVt