diff --git a/apps/mcp-server/.speakeasy/gen.lock b/apps/mcp-server/.speakeasy/gen.lock index 0ed906d9fe..afa0dd88a1 100644 --- a/apps/mcp-server/.speakeasy/gen.lock +++ b/apps/mcp-server/.speakeasy/gen.lock @@ -1,25 +1,25 @@ lockVersion: 2.0.0 id: f7130d09-dac4-4515-9162-6095782b6bb6 management: - docChecksum: f4af9daecfe34a4033296a586d8d6d7d + docChecksum: 4c47d7e665ea65c252e5e554a7bbf713 docVersion: "1.0" - speakeasyVersion: 1.777.1 - generationVersion: 2.903.2 - releaseVersion: 0.2.0 - configChecksum: 64655550887db248ac56f6a3d0ee7ced + speakeasyVersion: 1.785.0 + generationVersion: 2.912.1 + releaseVersion: 0.2.1 + configChecksum: 34a8c62fecbf1b9b312551b4d5c97a36 repoURL: https://github.com/trycompai/comp.git repoSubDirectory: apps/mcp-server installationURL: https://github.com/trycompai/comp published: true persistentEdits: - generation_id: a46f246e-21df-453d-ad10-468b1cf49621 - pristine_commit_hash: 932e03063f9f9d48e3862d3763a6abf6a2665e55 - pristine_tree_hash: 0081b81e18ab4fb87c36964d383ed327eb05600c + generation_id: 18bc4b7a-b3dc-4e53-bbda-7372319cdc2b + pristine_commit_hash: 0fec57803fafa06b5bc6c3a9f6dc0ddc614ed512 + pristine_tree_hash: 9f41ee1a8f18243b69b0fcae9714836043fd17c1 features: mcp-typescript: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.2 - core: 1.3.1 + core: 1.3.4 defaultEnabledRetries: 0.1.0 enumUnions: 0.1.0 globalSecurity: 0.1.3 @@ -29,7 +29,7 @@ features: nullables: 0.1.0 operationTimeout: 0.1.0 responseFormat: 0.1.1 - retries: 0.1.0 + retries: 0.1.1 sdkHooks: 0.3.0 unions: 0.2.0 trackedFiles: @@ -51,12 +51,12 @@ trackedFiles: pristine_git_object: 4f9e60a9462fc4def738d60c3aaadf8232ef185f manifest.json: id: ca642a226869 - last_write_checksum: sha1:bfb39392ec0cd8aef95d8586beaf26c67fd529a8 - pristine_git_object: db0fdc1fb608fbbe681d3b1623287b8023ff0bb9 + last_write_checksum: sha1:ce78b444f55d40b93a3f537840b0c22a615920c9 + pristine_git_object: 58b681ade53bf3ab681d9e8dcda86d6774f50dce package.json: id: 7030d0b2f71b - last_write_checksum: sha1:0e73c86369bcad1464f35a574145b49f932e93ff - pristine_git_object: b4ae779d8e01b50a0af1c4b0dc3ca2e16c0b8510 + last_write_checksum: sha1:bab98b7fc6bd63e08be3e9aec4e6920d1968e9b2 + pristine_git_object: e0a74fef0792900a9d6f0886a29fd210a8124b22 src/core.ts: id: f431fdbcd144 last_write_checksum: sha1:3c1fe2275a0f345cf54298150f100299284b3f0e @@ -609,6 +609,74 @@ trackedFiles: id: f7889789e57c last_write_checksum: sha1:a782d7973e2926e21a9451121f1936d3178d5721 pristine_git_object: b0149a81e667ece102d6c6867e9f04a6973abffd + src/funcs/ismsISMSControllerAddControlsV1.ts: + id: 5649fe6f0f49 + last_write_checksum: sha1:343e1ab65c1ff5da5f11c62ba597704eb41ee1dd + pristine_git_object: ab89c455767a5f4abe7d038a07db3168c5a6b9ce + src/funcs/ismsISMSControllerApproveV1.ts: + id: 99e25eaec081 + last_write_checksum: sha1:790fbe040e8e65cb31abbeb8f170e86d8a9e9733 + pristine_git_object: 7ba10d160d1f7af00a43a997cee091f3a12444cc + src/funcs/ismsISMSControllerDeclineV1.ts: + id: b1adfab3e4d0 + last_write_checksum: sha1:1200e0e596ba2fac7821a3f7dd83bab269c2b5f7 + pristine_git_object: 08731ea313ac1a1bef46f56730c61c4ac6f6d0b3 + src/funcs/ismsISMSControllerDriftV1.ts: + id: 0065cdb563db + last_write_checksum: sha1:9953e04761777e3542e92d9af26497ed319b7600 + pristine_git_object: 190393d2ec107a4d1421ca13a61fc104e9fb2f30 + src/funcs/ismsISMSControllerEnsureSetupV1.ts: + id: 6abfb7cfcbf6 + last_write_checksum: sha1:2ae687db9cdcd34fa35c7ca58b268635012970a9 + pristine_git_object: d254e7c52d2ddff059f92805e13b4a9f13e1d121 + src/funcs/ismsISMSControllerExportDocumentV1.ts: + id: 73af0a621cc7 + last_write_checksum: sha1:a3b5f2682197adb5201f63bb58914eb8afa1a48a + pristine_git_object: 2e1ab92e91a6656c7e99bb4c624493155aaf298c + src/funcs/ismsISMSControllerGenerateV1.ts: + id: 064c4971353a + last_write_checksum: sha1:3aa0f23d755a178be599499ac3611fb4c97400c3 + pristine_git_object: 05c0a184c6d89b4c594beb66fdadf41604ffbdb4 + src/funcs/ismsISMSControllerGetDocumentV1.ts: + id: 730f2b56f8f2 + last_write_checksum: sha1:6dda80d0d448f49929c2c3d99abc884c3b98995c + pristine_git_object: 1adc970464d079ee6b5c19a78f8d8b91c0f082f7 + src/funcs/ismsISMSControllerRemoveControlV1.ts: + id: 24b891e82464 + last_write_checksum: sha1:2ce0224cd42019ceb541f1199bd173434351f7a7 + pristine_git_object: a5fce0085b3fa1abee58d03c4e9ccea1fd09ea73 + src/funcs/ismsISMSControllerSubmitForApprovalV1.ts: + id: 140ca9ea286f + last_write_checksum: sha1:757806a088c568e6284f273d4092a7ed0f099b6b + pristine_git_object: 1dfecfd9765c6ca22178e41c10a34e9f7fc0c157 + src/funcs/ismsISMSProfileControllerGenerateAllV1.ts: + id: a45e55c89073 + last_write_checksum: sha1:f2565263cbadabc645a859e3f3ee6442a378a800 + pristine_git_object: 8efc493f5e2934e7c19f5a21a8176d6dd717f009 + src/funcs/ismsISMSProfileControllerGetProfileV1.ts: + id: a716c980e993 + last_write_checksum: sha1:2b2991dac4aa4f522d92d31a34286b69eaf4ef62 + pristine_git_object: b7d98494d44d622522511700d610a59e9d86e8de + src/funcs/ismsISMSProfileControllerSaveProfileV1.ts: + id: 24b070f09481 + last_write_checksum: sha1:124110e41205d48c636e1b4e13788b4e0f00333d + pristine_git_object: a43b4ae03052493733ab269db09753df592d247f + src/funcs/ismsISMSRegistersControllerCreateRowV1.ts: + id: a30d0900461a + last_write_checksum: sha1:62728387f30b696805c8aa40df98b47c65550ae0 + pristine_git_object: 7d67d84870e4b772c220a16741da65caf3c61eae + src/funcs/ismsISMSRegistersControllerDeleteRowV1.ts: + id: 668e27c9dd79 + last_write_checksum: sha1:fdf1c96a66601e1e651d59f2dfc2f65a9050a443 + pristine_git_object: 0bb4140af955366c85a89b20b341ff5df85817cc + src/funcs/ismsISMSRegistersControllerSaveNarrativeV1.ts: + id: c17e530fd18f + last_write_checksum: sha1:ca906f32b39d9f70984416618b4eb9ee5de8073b + pristine_git_object: a364b31d25c882b081860e6fccb1b4c85e80627f + src/funcs/ismsISMSRegistersControllerUpdateRowV1.ts: + id: 43a9c0a2dbb7 + last_write_checksum: sha1:6f254f07a7a06b9b773ac843e2d997666d12eedd + pristine_git_object: 73636597c01c8869e068d569071eaa088918285f src/funcs/knowledgeBaseKnowledgeBaseControllerCreateRunTokenV1.ts: id: 5eba991875b9 last_write_checksum: sha1:10c21dc22c76c9d210c75dc3b54c00772464b2b1 @@ -1509,6 +1577,10 @@ trackedFiles: id: d1e3cf03def3 last_write_checksum: sha1:4b1df911e173b0e115a818bef74623306e1e856b pristine_git_object: bfef24df0b510f3f97b5b2bbf9f4a31c211b4b2d + src/funcs/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts: + id: 141c29e2fcbd + last_write_checksum: sha1:11b0b66154db27343e829ec685d50323b6947128 + pristine_git_object: a3864e4c146b64320dbc28d84fb58dcf211cff17 src/funcs/trustPortalTrustPortalControllerRemoveFaviconV1.ts: id: 8db650dae67f last_write_checksum: sha1:9cdac7f01689c0e341c93455db101e30028e4513 @@ -1557,6 +1629,10 @@ trackedFiles: id: 2d23478e0fe7 last_write_checksum: sha1:e14ddb9f7986dd63702c03788e3487ba8385d713 pristine_git_object: 60357fd0ca4fc0e7922f6e41ae09c26c023cfd1c + src/funcs/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts: + id: 7f0d78b1cda3 + last_write_checksum: sha1:a38f2e14e7d8eeb18cd4095474c00e1dff57b19c + pristine_git_object: 51a2f1ef1c021dbaa330f5fcfb44a965431c8f7f src/funcs/trustPortalTrustPortalControllerUploadFaviconV1.ts: id: 986da4abd394 last_write_checksum: sha1:39a194ff922fb8ad306007daa9fadb0472634886 @@ -1607,16 +1683,16 @@ trackedFiles: pristine_git_object: 9c36bf01332084f735909a71036c3544cc4c7e3a src/landing-page.ts: id: ef64a6ee46d7 - last_write_checksum: sha1:e150f9178a75ea2a1b40a30555cf8e347529ec98 - pristine_git_object: 6e99225096366eaac8e3a05d78d8cdebb1d7d774 + last_write_checksum: sha1:e61dd75dcf9f6e0d604a47161bdf596b47522f38 + pristine_git_object: 7fa965187f41c918a122a56e735a2b6ba7629d75 src/lib/base64.ts: id: "598522066688" last_write_checksum: sha1:e9f04a037018040361043104960982f7c22db52d pristine_git_object: d4bd8b341290e7a828a171d840bd0b0fff7c7cd7 src/lib/config.ts: id: 320761608fb3 - last_write_checksum: sha1:02c23a9ad3f5c6fbde59bf760c7253f6d6f73c10 - pristine_git_object: def4f2dcd8d17c3be1079ab344ed907f35730ecb + last_write_checksum: sha1:f7b05781d1875a3110bbd27f14554e8cdb404875 + pristine_git_object: 87f1298a7aeb8d1ae8163009a316aa7aa8e68890 src/lib/encodings.ts: id: 3bd8ead98afd last_write_checksum: sha1:3ff4ad6809b749125820fd39c01427b84d3fe0d6 @@ -1647,8 +1723,8 @@ trackedFiles: pristine_git_object: ccbe51eac69dfb0da5131f14fd753c4b47c1d527 src/lib/retries.ts: id: b24a69d15639 - last_write_checksum: sha1:f3da74dffcbe2756c69393f8600205aa1dc06e68 - pristine_git_object: e3ce9aba72150fc3c18f3105d39b21aba809377b + last_write_checksum: sha1:42c8f6cc4c875be236230a8c760f4f32d8c1ab68 + pristine_git_object: 21a647e1e9ae64817fcd63b5dd6bb5a51b63d225 src/lib/schemas.ts: id: deb4b531fae1 last_write_checksum: sha1:7c7ba40781682f6d44bb585b5016e2527b52660e @@ -1703,8 +1779,8 @@ trackedFiles: pristine_git_object: 35c8713b6f8c7f17e2545423d3e74401ff77d04b src/mcp-server/mcp-server.ts: id: aabbc4ab07c1 - last_write_checksum: sha1:fa536c2fa0851175d16b7d81b75ede913df7f9f7 - pristine_git_object: c3521094cad8c39473728d9fdaa9c623a555db67 + last_write_checksum: sha1:3d88512aefa309f4dcb20d48648428b6438377ac + pristine_git_object: 376f67f80fc063843f27300dc056339ea0feb14f src/mcp-server/prompts.ts: id: 26f3d73cbf31 last_write_checksum: sha1:cadb036e04534a6d9d765809eebb266d188c499b @@ -1719,16 +1795,16 @@ trackedFiles: pristine_git_object: c25696d4c4f70e081fa5d87ad6891874c509a577 src/mcp-server/server.ts: id: 2784dd48e82a - last_write_checksum: sha1:cf22bb0d0df287f9c63c9a707fa39eb06659a3de - pristine_git_object: 502eff487dc6f1a11e1dc2dcf1b63f38e86063e1 + last_write_checksum: sha1:95a63b784c643a6ba1fe7141d9b5efe00d214f3b + pristine_git_object: e1e5786a84a8395919d7970226296ebd370c956c src/mcp-server/shared.ts: id: 074e80d4be1e last_write_checksum: sha1:19c9034032819a14f15c430de4350c8aba99d725 pristine_git_object: bb74a74788ebd7d11262f5f63b8fdd29ab817f48 src/mcp-server/tools.ts: id: 654d5d1f2062 - last_write_checksum: sha1:39f9653cc8c2e7746410ff864a4e615edef2a558 - pristine_git_object: 98c62c24119cead4c96afe1b43e1229c19486632 + last_write_checksum: sha1:ef6e9944aa7a282e3ee640e5135a3c31d77b2d62 + pristine_git_object: e2a1e15ef2605a8dc9e6a8cb3e434f926e27ee1e src/mcp-server/tools/attachmentsAttachmentsControllerCreateAttachmentV1.ts: id: 9b48ca86a642 last_write_checksum: sha1:422b1d8ff68604c8ff048f5b267415915462cf91 @@ -2169,6 +2245,74 @@ trackedFiles: id: f5e29a0cee86 last_write_checksum: sha1:ad0e1fa9f86e63556286347429d12d60f4ac0b95 pristine_git_object: 5d6419ca9d1411cc90a08318e28908ee88061f45 + src/mcp-server/tools/ismsISMSControllerAddControlsV1.ts: + id: 5d41791a346c + last_write_checksum: sha1:1f59cd7672265a16dae13a3f5a8c29b49e4208df + pristine_git_object: c9086fb194af003d20223f04e21c744b1758e26e + src/mcp-server/tools/ismsISMSControllerApproveV1.ts: + id: 3a9ff068cdbd + last_write_checksum: sha1:25e1372ba0a341536d15aa506c4c3b9afa11ce85 + pristine_git_object: 7b5b46b248395cd0fa5c7afb7a7e1aafffb491f7 + src/mcp-server/tools/ismsISMSControllerDeclineV1.ts: + id: d0d7f85a3726 + last_write_checksum: sha1:6c768fc6769fb540c59cc09bc40126a811da43ab + pristine_git_object: fa188f50fb8e8910ce242f91b3cc32d79884ede3 + src/mcp-server/tools/ismsISMSControllerDriftV1.ts: + id: 5bed3c4c844d + last_write_checksum: sha1:47d999687040cdc7f1a1d9af3db4d774c7fe306b + pristine_git_object: e13c79aebc0937539f74b8e8ddc1ac3de2cde1d6 + src/mcp-server/tools/ismsISMSControllerEnsureSetupV1.ts: + id: 19443cf7a53f + last_write_checksum: sha1:97f8ac77afd87310c190e17155645a10126f4783 + pristine_git_object: 6e456383e602d1019ab6a2e6c4202d9bccf6137c + src/mcp-server/tools/ismsISMSControllerExportDocumentV1.ts: + id: fce72944b3cc + last_write_checksum: sha1:c104415038c7434c033c940cd8f53e5f3a718e17 + pristine_git_object: 9aefbd8d4bb45cef46722d3b7a5c3001185cd3d6 + src/mcp-server/tools/ismsISMSControllerGenerateV1.ts: + id: 9e672a251ed5 + last_write_checksum: sha1:0798369941ec17db15436738f2476094f93e99c1 + pristine_git_object: fa873aba3b56db2fb92e14cdc05dd08cca93022d + src/mcp-server/tools/ismsISMSControllerGetDocumentV1.ts: + id: 70fe134e0bb3 + last_write_checksum: sha1:f1eb4251e7dafce9c11a9175081b07897a5dfd9c + pristine_git_object: a03a487deade89225e1ccd2b522755d06e25b03c + src/mcp-server/tools/ismsISMSControllerRemoveControlV1.ts: + id: 56cf170ad78f + last_write_checksum: sha1:dbae79dbb31d70165172980678a6e6c20f683445 + pristine_git_object: c218418cc3c83b645409a3b6f79e77149936babb + src/mcp-server/tools/ismsISMSControllerSubmitForApprovalV1.ts: + id: 77e27d7b5444 + last_write_checksum: sha1:8ea8021598adda8ed33703865d9bad3efc111e66 + pristine_git_object: da84e376c7adf1d82e3578a300350b40c76d345c + src/mcp-server/tools/ismsISMSProfileControllerGenerateAllV1.ts: + id: 81f935b20b48 + last_write_checksum: sha1:c8cb5f915a3dc66047f8f1544430037bf930329c + pristine_git_object: 05e912a0c8c7ca4f2c842ae1c681d336cfe41c5c + src/mcp-server/tools/ismsISMSProfileControllerGetProfileV1.ts: + id: 75821e977805 + last_write_checksum: sha1:64c7f8441924c38abf5e38b2ef555e9e9a627bd5 + pristine_git_object: 0d16e72c66bcb39fd35b5a891c060f1e35310f48 + src/mcp-server/tools/ismsISMSProfileControllerSaveProfileV1.ts: + id: 738041cf5c67 + last_write_checksum: sha1:e331df3d59150506d7b933eaf5ddc68ca37475d9 + pristine_git_object: 8fcf21eca2f673666e57e396794f38be28ddf084 + src/mcp-server/tools/ismsISMSRegistersControllerCreateRowV1.ts: + id: bd8e918b2ffa + last_write_checksum: sha1:4d912dcac6e00a7542d2e804e8d75159c94f75a2 + pristine_git_object: 35a13a865bd196d40c77bbf4ff07ae8aa140555f + src/mcp-server/tools/ismsISMSRegistersControllerDeleteRowV1.ts: + id: 24fdf3033493 + last_write_checksum: sha1:27f4e93d51438ced6278ee15b6e1badbf4a60277 + pristine_git_object: 9129cacc83a270212ebe03253028a0d06f46ff64 + src/mcp-server/tools/ismsISMSRegistersControllerSaveNarrativeV1.ts: + id: dcc3467c807c + last_write_checksum: sha1:533f99349295833bab042d3c03dfc2ae695720ff + pristine_git_object: 16c227101a649cfbcae6f58782abd98d64f3d080 + src/mcp-server/tools/ismsISMSRegistersControllerUpdateRowV1.ts: + id: f732be09da37 + last_write_checksum: sha1:e242a5197b7d9b34aa23d0b33ab0a4a0b3841030 + pristine_git_object: bf63704dba3bae3c8ab794cf3219a2a131872074 src/mcp-server/tools/knowledgeBaseKnowledgeBaseControllerCreateRunTokenV1.ts: id: d3621199c500 last_write_checksum: sha1:441d88db28ae1cd24024614cdc4cc205cc9ed508 @@ -3021,6 +3165,10 @@ trackedFiles: id: 94bf01d772d4 last_write_checksum: sha1:91953f5f600642b8ab4bd5be26d883a8875c8b4b pristine_git_object: 30ed800c4a41c6adc2706ff253297df4e97967ad + src/mcp-server/tools/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts: + id: a292d8347a2f + last_write_checksum: sha1:0e55972f908b89d850364117d2d1ae59fcbfbbc5 + pristine_git_object: 8ae35e90acb7f90f595c9f482c05b97387c1d645 src/mcp-server/tools/trustPortalTrustPortalControllerRemoveFaviconV1.ts: id: 7a824a350b20 last_write_checksum: sha1:430e7f6ee352d79294c0e4c6631d7f7726c2d3a5 @@ -3069,6 +3217,10 @@ trackedFiles: id: fccf27438f43 last_write_checksum: sha1:3f0bf007c4dd59cea40cee2058d187773d5212d5 pristine_git_object: f662bf409a023e7487525b29629128ff6e4cbf77 + src/mcp-server/tools/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts: + id: 9d34926a61ac + last_write_checksum: sha1:86d293dc52c626a23acc4f8ee694748a6aa5fd38 + pristine_git_object: 1080dc23ef096218dff149670b73330a1f6fa35f src/mcp-server/tools/trustPortalTrustPortalControllerUploadFaviconV1.ts: id: af6859f074fd last_write_checksum: sha1:cdec47e69d91ad6d3da7d875d784449b02c98669 @@ -3435,8 +3587,8 @@ trackedFiles: pristine_git_object: e6e7b767b88afe5e60a347e05c7274ee1737f8a0 src/models/controlscontrollerunlinkdocumenttypev1op.ts: id: edc19b966a6a - last_write_checksum: sha1:e7fb53854d37ff920e218a2561694372e6602ab3 - pristine_git_object: 1298a1804fb05949e2420317f0daaeba4762dc4c + last_write_checksum: sha1:ce611aa5c47ad1ee56cc0d9f7552d297abc4be54 + pristine_git_object: 70efb8dea0b90b4ba7083e51b16183fb3ab4c300 src/models/createaccessrequestdto.ts: id: c099827d5497 last_write_checksum: sha1:06ccfeae9414d617517491bb34f55bba1e7251f1 @@ -3517,6 +3669,10 @@ trackedFiles: id: 9f65a13f79eb last_write_checksum: sha1:0fcd0d2c036fb1bb62269690d4eb70b8fba88faa pristine_git_object: 5c12ea9501e8c12ec0769adf52dd9f716fda9e84 + src/models/customframeworkbadgeresponsedto.ts: + id: 493808aa1cc6 + last_write_checksum: sha1:c14a6ab2b8e52c287ce059c73fefd603842eb7fc + pristine_git_object: 22b5d78b312d2ef81f362cfdb691c3ae910a88f4 src/models/declinesoadocumentdto.ts: id: 217596b381df last_write_checksum: sha1:43d0f91e50026e591c3b23b66f18fac202b62f42 @@ -3597,6 +3753,10 @@ trackedFiles: id: d8e08f600d39 last_write_checksum: sha1:b6f76c83d5cf992a3691ee0bb9945b7ef08fe490 pristine_git_object: a2ca6e2b328f609988c096a693437f432af7e0c2 + src/models/ensureismssetupdto.ts: + id: 8630d7e9285e + last_write_checksum: sha1:7386308b70e55c622c721fad4a8637b562883546 + pristine_git_object: 7e25189a5bec6505ad1abbbb95c1e104690f3525 src/models/ensuresoasetupdto.ts: id: 65adcd42cfca last_write_checksum: sha1:324a64e5a23e4cc1ed12a2f5efbea55e5305bf0f @@ -3689,6 +3849,10 @@ trackedFiles: id: f06392ff18c6 last_write_checksum: sha1:d3c3421c829d4b7851953155499f66d55211faf0 pristine_git_object: 47b2903c68fe3afb80c070e70c8b830c8854f90c + src/models/exportismsdocumentdto.ts: + id: befa3c437b22 + last_write_checksum: sha1:9e6cfa72d8ecd2b6af85f38ce08fd62bf9a387e0 + pristine_git_object: 283e5373cb9d7e190d09868ba54e0e7326c1f7ae src/models/exportquestionnairedto.ts: id: 9aa09fc1d930 last_write_checksum: sha1:853525161d3c61f8cf40e2ca5781f75e299c2d5a @@ -3793,6 +3957,10 @@ trackedFiles: id: d8d3af10ad61 last_write_checksum: sha1:2332e44abbcc35882c6646076266a5ec2c508414 pristine_git_object: 0be60b267078d01132bc4b3821fe71b9fb5eb5a5 + src/models/generatealldto.ts: + id: 26b9d1817bbf + last_write_checksum: sha1:0a859d36a8868feaf3d74d1f4d6d89263811a7d5 + pristine_git_object: 13cf5e89551875f6594a24d9308c2c824fa47aa6 src/models/inviteitemdto.ts: id: 0d06f282a8f8 last_write_checksum: sha1:87ba6dc757f9b63143a444bbb6f37f46769c9cd8 @@ -3801,6 +3969,66 @@ trackedFiles: id: dac74d5ee823 last_write_checksum: sha1:ab6c27cc1e3e48a23cfd56ff45202e69f8600e77 pristine_git_object: 51ca3a31a038213a54f851af02996d50dfc1fbf8 + src/models/ismscontrolleraddcontrolsv1op.ts: + id: 200df0f50729 + last_write_checksum: sha1:3a10e7daec98ad7359c4db03a75f20de3a860574 + pristine_git_object: 663a2d8b2ea0ac28c9f9d778b9ec21c174016c4c + src/models/ismscontrollerapprovev1op.ts: + id: 94c834a2aa69 + last_write_checksum: sha1:a6b3cd1423bed45c87b78c543e7d521c5ce0323d + pristine_git_object: 35947d2365344a14713e008e1914e48f392785ae + src/models/ismscontrollerdeclinev1op.ts: + id: ffaa3e966755 + last_write_checksum: sha1:60487f980aa76d2504041a896a69c3d0f2ba2268 + pristine_git_object: 5020fb108d7d84ca8333e16e7929d0298278a3e7 + src/models/ismscontrollerdriftv1op.ts: + id: cb6a4e64a36b + last_write_checksum: sha1:f6d9cdb19d11bfe04fa1c99206184b3afd0c954f + pristine_git_object: 14d16ab18903e0906bdd2fe061f73c00169f58d8 + src/models/ismscontrollerexportdocumentv1op.ts: + id: 7b615dad4ecc + last_write_checksum: sha1:ae2578c5d5d1770c3b0ed3bff06700bc69ba1fc5 + pristine_git_object: 046d3efc4282812b0b2258cfc1688dd0d031219f + src/models/ismscontrollergeneratev1op.ts: + id: 0521c225e604 + last_write_checksum: sha1:9c59b2a0b0d9f1d2504b7a01103f8dc80de57164 + pristine_git_object: 44d91e0f24953fe959511d8abfc82362bd07f61f + src/models/ismscontrollergetdocumentv1op.ts: + id: edbb28012ec7 + last_write_checksum: sha1:1a43fe8a67af8a5302c1311c05066e97d2fcb5b5 + pristine_git_object: 3bf8745319f01fd5a6bc40f5f52eff80bd476006 + src/models/ismscontrollerremovecontrolv1op.ts: + id: a0fbad374b7b + last_write_checksum: sha1:b570a4404098feb9dd3061987df3b835da647b13 + pristine_git_object: 915f8a6a835daabebfb45de9e7c68d288793a1ce + src/models/ismscontrollersubmitforapprovalv1op.ts: + id: da25ff05e379 + last_write_checksum: sha1:8799e5dcc5890efbd9188d1f5be4a1dd84a9c114 + pristine_git_object: 17c3dcb878a2b7c10a44e036f2cad33d434c8697 + src/models/ismsprofilecontrollergetprofilev1op.ts: + id: dc7b115e056f + last_write_checksum: sha1:024008cf29986551f8c601ab26573799e29f1700 + pristine_git_object: f65bc824fcc5453e6b08327e19a1a1380176327a + src/models/ismsprofilecontrollersaveprofilev1op.ts: + id: 4e754d2fba31 + last_write_checksum: sha1:d7f41f2d7625135920fea7595091205f512893d2 + pristine_git_object: ee9f9cc32b08525d76d14b67debe97d762347ec9 + src/models/ismsregisterscontrollercreaterowv1op.ts: + id: 9f076d5294c0 + last_write_checksum: sha1:46d7757d1a0d68cdd95cda690c8c036b6201ffe9 + pristine_git_object: 69e20134cdd9468658af2cccb64ff6b1080bfdac + src/models/ismsregisterscontrollerdeleterowv1op.ts: + id: 2a3c3e9c20ab + last_write_checksum: sha1:99778effb0c359cac2d9c900043015f39bd6ff41 + pristine_git_object: 0b36a2850f28c623701b7c7965fd05fface94d0f + src/models/ismsregisterscontrollersavenarrativev1op.ts: + id: f2796ca6bf76 + last_write_checksum: sha1:3d888cbe0544813312e235d630653baf1218ba80 + pristine_git_object: 560ed38a1fd2f55ce151da6f5c27584f039ee7eb + src/models/ismsregisterscontrollerupdaterowv1op.ts: + id: 52527e12c047 + last_write_checksum: sha1:9d69cbfdbf62941cc3f692b3864c1403ce79a966 + pristine_git_object: 73ba642b21700b33083eadbd06fee7726befacd3 src/models/knowledgebasecontrollercreateruntokenv1op.ts: id: 435247f848ea last_write_checksum: sha1:37a33eb2a331bc201b7b5dd8efff7ddd13f907e9 @@ -3829,6 +4057,10 @@ trackedFiles: id: 4590345cf58e last_write_checksum: sha1:696a366176d37ec1926bdb511af8b8ba34670632 pristine_git_object: cade160b8e09977de386cbc6e5727ae44242bafb + src/models/linkismscontrolsdto.ts: + id: 14d6882542de + last_write_checksum: sha1:3e745e4013e8324388940ff036556c17f36d1b33 + pristine_git_object: 9ec14430aeb38d750cbb6963eef428d8537bb14c src/models/linkpoliciesdto.ts: id: e180fa45bfc9 last_write_checksum: sha1:dc310527ab9bf116550592e644b134ab8ad4ce0e @@ -4377,6 +4609,10 @@ trackedFiles: id: 0f2972c8890d last_write_checksum: sha1:9085bf332882e38ca3599996f28ca6973c35fa74 pristine_git_object: 0faaae6f8fd5127115b4cb7f6da4389841d5e2d9 + src/models/submitismsforapprovaldto.ts: + id: 46c18b594779 + last_write_checksum: sha1:689499fff4be2ab38509e6d06f67d182a016c6ed + pristine_git_object: c586872f443865b3e3a4d495d72d3357285d1939 src/models/submitsoaforapprovaldto.ts: id: 52023de4de30 last_write_checksum: sha1:60999d86a6f3f775ce12a92a5edfd7fd589c0a2c @@ -4681,6 +4917,10 @@ trackedFiles: id: 8b42bf2db483 last_write_checksum: sha1:328e32571c304700b5041dbd63deaed452298ca2 pristine_git_object: cefa5d95e0791e453fc9597be327b51c63923268 + src/models/trustportalcontrollerremovecustomframeworkbadgev1op.ts: + id: 187a29dd6e93 + last_write_checksum: sha1:90165df75708bab73bf95aede1dc610312a8c6cd + pristine_git_object: bc5333433600a0d2b988be0a422baed464969847 src/models/trustportalcontrollerupdatecustomframeworkv1op.ts: id: 0c0141cc1669 last_write_checksum: sha1:5717e944537591a1bf5e59864587b166e702eec3 @@ -4777,6 +5017,10 @@ trackedFiles: id: 207b5be255f7 last_write_checksum: sha1:e89512f162b2631f32fcdf6effea66723da2d7c2 pristine_git_object: 026aa6b597c2f4207de9426ebc35d0ea57ceec64 + src/models/uploadcustomframeworkbadgedto.ts: + id: aac80e0f3a2c + last_write_checksum: sha1:ae4c0c635c2ef60e3126a3583ccabe9f747f58f3 + pristine_git_object: 2b46d4b6fdf862c4849cc7f9f85a0e93adb5ecde src/models/uploaddocumentdto.ts: id: fcadbde7579d last_write_checksum: sha1:a3f49dab9591d506a0789bcf998e1e76d59e9403 @@ -4855,12 +5099,12 @@ trackedFiles: pristine_git_object: d89990b1a39878e9651513ee19fcba40b01670b4 src/tool-names.ts: id: a9977280f9eb - last_write_checksum: sha1:7ae774ca77ae00852d03e04eb8622d76923d0096 - pristine_git_object: 684c1bcdd825e2fba019cf5a3f9357b322e37688 + last_write_checksum: sha1:db18d786cc299f0eaacf93daaef5242df6f27a83 + pristine_git_object: 10a3e6a2d833e0bfcfbd0afb7c899f7e3d27eec3 src/types/async.ts: id: fac8da972f86 - last_write_checksum: sha1:3ff07b3feaf390ec1aeb18ff938e139c6c4a9585 - pristine_git_object: 689dba5de50e8769e5f3bb913e3f42a146d15bc1 + last_write_checksum: sha1:675d04bb4b4081dc3482f18de98674f9b446e7b4 + pristine_git_object: 1543b95cf7be9b5a871d7395f259dbd65331dc21 src/types/bigint.ts: id: 3ca6e3280e43 last_write_checksum: sha1:ebf6d4b27fc3aa7ff76dbedae9a19fb7f39e5dc7 @@ -7247,5 +7491,135 @@ examples: parameters: path: issueId: "" + TrustPortalController_uploadCustomFrameworkBadge_v1: + speakeasy-default-trust-portal-controller-upload-custom-framework-badge-v1: + requestBody: + application/json: {"customFrameworkId": "cfrm_6914cd0e16e4c7dccbb54426", "fileName": "acme-framework-badge.png", "fileType": "image/png", "fileData": ""} + responses: + "201": + application/json: {"success": false, "badgeUrl": "https://ample-fund.info/"} + TrustPortalController_removeCustomFrameworkBadge_v1: + speakeasy-default-trust-portal-controller-remove-custom-framework-badge-v1: + parameters: + query: + customFrameworkId: "cfrm_6914cd0e16e4c7dccbb54426" + IsmsController_ensureSetup_v1: + speakeasy-default-isms-controller-ensure-setup-v1: + requestBody: + application/json: {"frameworkId": "frk_abc123def456"} + IsmsController_getDocument_v1: + speakeasy-default-isms-controller-get-document-v1: + parameters: + path: + id: "" + IsmsController_addControls_v1: + speakeasy-default-isms-controller-add-controls-v1: + parameters: + path: + id: "" + requestBody: + application/json: {"controlIds": ["ctl_abc123def456", "ctl_ghi789jkl012"]} + IsmsController_removeControl_v1: + speakeasy-default-isms-controller-remove-control-v1: + parameters: + path: + id: "" + controlId: "" + IsmsController_generate_v1: + speakeasy-default-isms-controller-generate-v1: + parameters: + path: + id: "" + IsmsController_submitForApproval_v1: + speakeasy-default-isms-controller-submit-for-approval-v1: + parameters: + path: + id: "" + requestBody: + application/json: {"approverId": "mem_abc123def456"} + IsmsController_approve_v1: + speakeasy-default-isms-controller-approve-v1: + parameters: + path: + id: "" + IsmsController_decline_v1: + speakeasy-default-isms-controller-decline-v1: + parameters: + path: + id: "" + IsmsController_drift_v1: + speakeasy-default-isms-controller-drift-v1: + parameters: + path: + id: "" + IsmsController_exportDocument_v1: + speakeasy-default-isms-controller-export-document-v1: + parameters: + path: + id: "" + requestBody: + application/json: {"format": "pdf"} + IsmsRegistersController_createRow_v1: + speakeasy-default-isms-registers-controller-create-row-v1: + parameters: + path: + id: "" + register: "" + requestBody: + application/json: {} + IsmsRegistersController_updateRow_v1: + speakeasy-default-isms-registers-controller-update-row-v1: + parameters: + path: + register: "" + rowId: "" + requestBody: + application/json: {} + IsmsRegistersController_deleteRow_v1: + speakeasy-default-isms-registers-controller-delete-row-v1: + parameters: + path: + register: "" + rowId: "" + IsmsRegistersController_saveNarrative_v1: + speakeasy-default-isms-registers-controller-save-narrative-v1: + parameters: + path: + id: "" + requestBody: + application/json: {"narrative": {"key": ""}} + IsmsProfileController_getProfile_v1: + speakeasy-default-isms-profile-controller-get-profile-v1: + parameters: + query: + frameworkId: "" + IsmsProfileController_saveProfile_v1: + speakeasy-default-isms-profile-controller-save-profile-v1: + requestBody: + application/json: {"frameworkId": "", "answers": {"key": "", "key1": ""}} + IsmsProfileController_generateAll_v1: + speakeasy-default-isms-profile-controller-generate-all-v1: + requestBody: + application/json: {"frameworkId": "frk_abc123def456"} examplesVersion: 1.0.2 -releaseNotes: "## Mcp-typescript SDK Changes:\n* `CompAi.Trust Portal.TrustPortalController_listComplianceResources_v1()`: `response.[]` **Changed** (Breaking ⚠️)\n* `CompAi.Policies.PoliciesController_createPolicyVersion_v1()`: \n * `request.body` **Changed** (Breaking ⚠️)\n* `CompAi.Trust Portal.TrustPortalController_uploadComplianceResource_v1()`: \n * `request` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `CompAi.Evidence Export (Auditor).AuditorEvidenceExportController_exportAllEvidence_v1()`: `response` **Changed** (Breaking ⚠️)\n* `CompAi.Security Penetration Tests.PentestFindingContextsController_list_v1()`: **Added**\n* `CompAi.Trust Portal.TrustPortalController_getComplianceResourceUrl_v1()`: `request` **Changed**\n* `CompAi.Security Penetration Tests.PentestFindingContextsController_upsert_v1()`: **Added**\n* `CompAi.Security Penetration Tests.PentestFindingContextsController_remove_v1()`: **Added**\n* `CompAi.Trust Portal.TrustPortalController_listCustomFrameworks_v1()`: **Added**\n* `CompAi.Trust Portal.TrustPortalController_updateCustomFramework_v1()`: **Added**\n* `CompAi.Trust Access.TrustAccessController_getPublicCustomFrameworks_v1()`: **Added**\n* `CompAi.CloudSecurity.CloudSecurityController_resolveSession_v1()`: **Added**\n* `CompAi.Trust Portal.TrustPortalController_updateAllowedEmails_v1()`: **Added**\n* `CompAi.Findings.FindingsController_listFindings_v1()`: \n * `request.evidenceFormType` **Changed**\n* `CompAi.Findings.FindingsController_createFinding_v1()`: \n * `request.evidenceFormType.enum(account-types)` **Added**\n* `CompAi.Controls.ControlsController_create_v1()`: \n * `request.documentTypes[].enum(account_types)` **Added**\n* `CompAi.Controls.ControlsController_linkDocumentTypes_v1()`: \n * `request.body.formTypes[].enum(account_types)` **Added**\n* `CompAi.Controls.ControlsController_unlinkDocumentType_v1()`: \n * `request.formType` **Changed**\n* `CompAi.Security Penetration Tests.SecurityPenetrationTestsController_create_v1()`: \n * `request.body.additionalContext` **Added**\n" +releaseNotes: | + ## Mcp-typescript SDK Changes: + * `CompAi.Trust Portal.TrustPortalController_uploadCustomFrameworkBadge_v1()`: **Added** + * `CompAi.Trust Portal.TrustPortalController_removeCustomFrameworkBadge_v1()`: **Added** + * `CompAi.ISMS.IsmsController_ensureSetup_v1()`: **Added** + * `CompAi.ISMS.IsmsController_getDocument_v1()`: **Added** + * `CompAi.ISMS.IsmsController_addControls_v1()`: **Added** + * `CompAi.ISMS.IsmsController_removeControl_v1()`: **Added** + * `CompAi.ISMS.IsmsController_generate_v1()`: **Added** + * `CompAi.ISMS.IsmsController_submitForApproval_v1()`: **Added** + * `CompAi.ISMS.IsmsController_approve_v1()`: **Added** + * `CompAi.ISMS.IsmsController_decline_v1()`: **Added** + * `CompAi.ISMS.IsmsController_drift_v1()`: **Added** + * `CompAi.ISMS.IsmsController_exportDocument_v1()`: **Added** + * `CompAi.ISMS.IsmsRegistersController_createRow_v1()`: **Added** + * `CompAi.ISMS.IsmsRegistersController_updateRow_v1()`: **Added** + * `CompAi.ISMS.IsmsRegistersController_deleteRow_v1()`: **Added** + * `CompAi.ISMS.IsmsRegistersController_saveNarrative_v1()`: **Added** + * `CompAi.ISMS.IsmsProfileController_getProfile_v1()`: **Added** + * `CompAi.ISMS.IsmsProfileController_saveProfile_v1()`: **Added** + * `CompAi.ISMS.IsmsProfileController_generateAll_v1()`: **Added** diff --git a/apps/mcp-server/.speakeasy/gen.yaml b/apps/mcp-server/.speakeasy/gen.yaml index 5f494d3a4c..de540b10a7 100644 --- a/apps/mcp-server/.speakeasy/gen.yaml +++ b/apps/mcp-server/.speakeasy/gen.yaml @@ -31,7 +31,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false mcp-typescript: - version: 0.2.0 + version: 0.2.1 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/apps/mcp-server/.speakeasy/out.openapi.yaml b/apps/mcp-server/.speakeasy/out.openapi.yaml index abf703282f..fa70a3dabf 100644 --- a/apps/mcp-server/.speakeasy/out.openapi.yaml +++ b/apps/mcp-server/.speakeasy/out.openapi.yaml @@ -9405,6 +9405,66 @@ paths: og:description: "Enable/disable a custom framework on the trust portal and set its status in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs." x-speakeasy-mcp: name: "update-custom-framework" + /v1/trust-portal/custom-frameworks/badge: + post: + description: "Stores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility." + operationId: "TrustPortalController_uploadCustomFrameworkBadge_v1" + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/UploadCustomFrameworkBadgeDto" + responses: + "201": + description: "Badge uploaded successfully" + content: + application/json: + schema: + $ref: "#/components/schemas/CustomFrameworkBadgeResponseDto" + security: + - apikey: [] + summary: "Upload or replace a custom framework's Trust Portal badge image" + tags: + - "Trust Portal" + x-mint: + metadata: + title: "Upload or replace a custom framework's Trust | Comp AI API" + sidebarTitle: "Upload or replace a custom framework's Trust Portal badge image" + description: "Stores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility." + og:title: "Upload or replace a custom framework's Trust | Comp AI API" + og:description: "Stores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility." + x-speakeasy-mcp: + name: "upload-custom-framework-badge" + delete: + operationId: "TrustPortalController_removeCustomFrameworkBadge_v1" + parameters: + - name: "customFrameworkId" + required: true + in: "query" + description: "Org-authored custom framework ID whose badge to remove" + schema: + example: "cfrm_6914cd0e16e4c7dccbb54426" + type: "string" + responses: + "200": + description: "" + security: + - apikey: [] + summary: "Remove a custom framework's Trust Portal badge image" + tags: + - "Trust Portal" + description: "Remove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures." + x-mint: + metadata: + title: "Remove a custom framework's Trust Portal | Comp AI API" + sidebarTitle: "Remove a custom framework's Trust Portal badge image" + description: "Remove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance." + og:title: "Remove a custom framework's Trust Portal | Comp AI API" + og:description: "Remove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance." + x-speakeasy-mcp: + name: "remove-custom-framework-badge" /v1/trust-portal/overview: post: operationId: "TrustPortalController_updateOverview_v1" @@ -11954,6 +12014,638 @@ paths: og:description: "Export the approved Statement of Applicability document for ISO 27001 auditors, customer reviews, and internal records." x-speakeasy-mcp: name: "export-document" + /v1/isms/ensure-setup: + post: + operationId: "IsmsController_ensureSetup_v1" + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/EnsureIsmsSetupDto" + responses: + "200": + description: "Setup ensured" + security: + - apikey: [] + summary: "Ensure ISMS foundational documents exist" + tags: + - "ISMS" + description: "Ensure ISMS foundational documents exist in Comp AI." + x-mint: + metadata: + title: "Ensure ISMS foundational documents exist | Comp AI API" + sidebarTitle: "Ensure ISMS foundational documents exist" + description: "Ensure ISMS foundational documents exist in Comp AI." + og:title: "Ensure ISMS foundational documents exist | Comp AI API" + og:description: "Ensure ISMS foundational documents exist in Comp AI." + x-speakeasy-mcp: + name: "isms-ensure-setup" + /v1/isms/documents/{id}: + get: + operationId: "IsmsController_getDocument_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "ISMS document" + security: + - apikey: [] + summary: "Get an ISMS document with its latest version" + tags: + - "ISMS" + description: "Get an ISMS document with its latest version in Comp AI." + x-mint: + metadata: + title: "Get an ISMS document with its latest version | Comp AI API" + sidebarTitle: "Get an ISMS document with its latest version" + description: "Get an ISMS document with its latest version in Comp AI." + og:title: "Get an ISMS document with its latest version | Comp AI API" + og:description: "Get an ISMS document with its latest version in Comp AI." + x-speakeasy-mcp: + name: "get-document" + /v1/isms/documents/{id}/controls: + post: + operationId: "IsmsController_addControls_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/LinkIsmsControlsDto" + responses: + "200": + description: "Controls linked" + security: + - apikey: [] + summary: "Map organization controls to an ISMS document" + tags: + - "ISMS" + description: "Map organization controls to an ISMS document in Comp AI." + x-mint: + metadata: + title: "Map organization controls to an ISMS document | Comp AI API" + sidebarTitle: "Map organization controls to an ISMS document" + description: "Map organization controls to an ISMS document in Comp AI." + og:title: "Map organization controls to an ISMS document | Comp AI API" + og:description: "Map organization controls to an ISMS document in Comp AI." + x-speakeasy-mcp: + name: "add-controls" + /v1/isms/documents/{id}/controls/{controlId}: + delete: + operationId: "IsmsController_removeControl_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + - name: "controlId" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Control unlinked" + security: + - apikey: [] + summary: "Remove a control mapping from an ISMS document" + tags: + - "ISMS" + description: "Remove a control mapping from an ISMS document in Comp AI." + x-mint: + metadata: + title: "Remove a control mapping from an ISMS document | Comp AI API" + sidebarTitle: "Remove a control mapping from an ISMS document" + description: "Remove a control mapping from an ISMS document in Comp AI." + og:title: "Remove a control mapping from an ISMS document | Comp AI API" + og:description: "Remove a control mapping from an ISMS document in Comp AI." + x-speakeasy-mcp: + name: "remove-control" + /v1/isms/documents/{id}/generate: + post: + operationId: "IsmsController_generate_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Document with derived issues" + security: + - apikey: [] + summary: "Derive Context-of-the-Organization issues" + tags: + - "ISMS" + description: "Derive Context-of-the-Organization issues in Comp AI." + x-mint: + metadata: + title: "Derive Context-of-the-Organization issues | Comp AI API" + sidebarTitle: "Derive Context-of-the-Organization issues" + description: "Derive Context-of-the-Organization issues in Comp AI." + og:title: "Derive Context-of-the-Organization issues | Comp AI API" + og:description: "Derive Context-of-the-Organization issues in Comp AI." + x-speakeasy-mcp: + name: "generate" + /v1/isms/documents/{id}/submit-for-approval: + post: + operationId: "IsmsController_submitForApproval_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/SubmitIsmsForApprovalDto" + responses: + "200": + description: "Document submitted for approval" + security: + - apikey: [] + summary: "Submit an ISMS document for approval" + tags: + - "ISMS" + description: "Submit an ISMS document for approval in Comp AI." + x-mint: + metadata: + title: "Submit an ISMS document for approval | Comp AI API" + sidebarTitle: "Submit an ISMS document for approval" + description: "Submit an ISMS document for approval in Comp AI." + og:title: "Submit an ISMS document for approval | Comp AI API" + og:description: "Submit an ISMS document for approval in Comp AI." + x-speakeasy-mcp: + name: "isms-submit-for-approval" + /v1/isms/documents/{id}/approve: + post: + operationId: "IsmsController_approve_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Document approved" + security: + - apikey: [] + summary: "Approve an ISMS document" + tags: + - "ISMS" + description: "Approve an ISMS document in Comp AI." + x-mint: + metadata: + title: "Approve an ISMS document | Comp AI API" + sidebarTitle: "Approve an ISMS document" + description: "Approve an ISMS document in Comp AI." + og:title: "Approve an ISMS document | Comp AI API" + og:description: "Approve an ISMS document in Comp AI." + x-speakeasy-mcp: + name: "approve" + /v1/isms/documents/{id}/decline: + post: + operationId: "IsmsController_decline_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Document declined" + security: + - apikey: [] + summary: "Decline an ISMS document" + tags: + - "ISMS" + description: "Decline an ISMS document in Comp AI." + x-mint: + metadata: + title: "Decline an ISMS document | Comp AI API" + sidebarTitle: "Decline an ISMS document" + description: "Decline an ISMS document in Comp AI." + og:title: "Decline an ISMS document | Comp AI API" + og:description: "Decline an ISMS document in Comp AI." + x-speakeasy-mcp: + name: "decline" + /v1/isms/documents/{id}/drift: + get: + operationId: "IsmsController_drift_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Drift status" + security: + - apikey: [] + summary: "Detect drift against the approved snapshot" + tags: + - "ISMS" + description: "Detect drift against the approved snapshot in Comp AI." + x-mint: + metadata: + title: "Detect drift against the approved snapshot | Comp AI API" + sidebarTitle: "Detect drift against the approved snapshot" + description: "Detect drift against the approved snapshot in Comp AI." + og:title: "Detect drift against the approved snapshot | Comp AI API" + og:description: "Detect drift against the approved snapshot in Comp AI." + x-speakeasy-mcp: + name: "drift" + /v1/isms/documents/{id}/export: + post: + operationId: "IsmsController_exportDocument_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ExportIsmsDocumentDto" + responses: + "200": + description: "Rendered document" + security: + - apikey: [] + summary: "Export an ISMS document as PDF or DOCX" + tags: + - "ISMS" + description: "Export an ISMS document as PDF or DOCX in Comp AI." + x-mint: + metadata: + title: "Export an ISMS document as PDF or DOCX | Comp AI API" + sidebarTitle: "Export an ISMS document as PDF or DOCX" + description: "Export an ISMS document as PDF or DOCX in Comp AI." + og:title: "Export an ISMS document as PDF or DOCX | Comp AI API" + og:description: "Export an ISMS document as PDF or DOCX in Comp AI." + x-speakeasy-mcp: + name: "isms-export-document" + /v1/isms/documents/{id}/registers/{register}: + post: + operationId: "IsmsRegistersController_createRow_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + - name: "register" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + description: "Register row fields (per-register; validated at runtime by zod)" + content: + application/json: + schema: + type: "object" + properties: + kind: + type: "string" + enum: + - "internal" + - "external" + category: + type: "string" + description: + type: "string" + effect: + type: "string" + name: + type: "string" + needsExpectations: + type: "string" + interestedPartyId: + type: "string" + partyName: + type: "string" + requirement: + type: "string" + treatment: + type: "string" + objective: + type: "string" + target: + type: "string" + ownerMemberId: + type: "string" + cadence: + type: "string" + plan: + type: "string" + measurementMethod: + type: "string" + status: + type: "string" + enum: + - "not_started" + - "on_track" + - "at_risk" + - "met" + position: + type: "integer" + minimum: 0 + responses: + "200": + description: "Register row created" + security: + - apikey: [] + summary: "Create a row in an ISMS register" + tags: + - "ISMS" + description: "Create a row in an ISMS register in Comp AI." + x-mint: + metadata: + title: "Create a row in an ISMS register | Comp AI API" + sidebarTitle: "Create a row in an ISMS register" + description: "Create a row in an ISMS register in Comp AI." + og:title: "Create a row in an ISMS register | Comp AI API" + og:description: "Create a row in an ISMS register in Comp AI." + x-speakeasy-mcp: + name: "create-row" + /v1/isms/registers/{register}/{rowId}: + patch: + operationId: "IsmsRegistersController_updateRow_v1" + parameters: + - name: "register" + required: true + in: "path" + schema: + type: "string" + - name: "rowId" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + description: "Register row fields (per-register; validated at runtime by zod)" + content: + application/json: + schema: + type: "object" + properties: + kind: + type: "string" + enum: + - "internal" + - "external" + category: + type: "string" + description: + type: "string" + effect: + type: "string" + name: + type: "string" + needsExpectations: + type: "string" + interestedPartyId: + type: "string" + partyName: + type: "string" + requirement: + type: "string" + treatment: + type: "string" + objective: + type: "string" + target: + type: "string" + ownerMemberId: + type: "string" + cadence: + type: "string" + plan: + type: "string" + measurementMethod: + type: "string" + status: + type: "string" + enum: + - "not_started" + - "on_track" + - "at_risk" + - "met" + position: + type: "integer" + minimum: 0 + responses: + "200": + description: "Register row updated" + security: + - apikey: [] + summary: "Update a row in an ISMS register" + tags: + - "ISMS" + description: "Update a row in an ISMS register in Comp AI." + x-mint: + metadata: + title: "Update a row in an ISMS register | Comp AI API" + sidebarTitle: "Update a row in an ISMS register" + description: "Update a row in an ISMS register in Comp AI." + og:title: "Update a row in an ISMS register | Comp AI API" + og:description: "Update a row in an ISMS register in Comp AI." + x-speakeasy-mcp: + name: "update-row" + delete: + operationId: "IsmsRegistersController_deleteRow_v1" + parameters: + - name: "register" + required: true + in: "path" + schema: + type: "string" + - name: "rowId" + required: true + in: "path" + schema: + type: "string" + responses: + "200": + description: "Register row deleted" + security: + - apikey: [] + summary: "Delete a row in an ISMS register" + tags: + - "ISMS" + description: "Delete a row in an ISMS register in Comp AI." + x-mint: + metadata: + title: "Delete a row in an ISMS register | Comp AI API" + sidebarTitle: "Delete a row in an ISMS register" + description: "Delete a row in an ISMS register in Comp AI." + og:title: "Delete a row in an ISMS register | Comp AI API" + og:description: "Delete a row in an ISMS register in Comp AI." + x-speakeasy-mcp: + name: "delete-row" + /v1/isms/documents/{id}/narrative: + post: + operationId: "IsmsRegistersController_saveNarrative_v1" + parameters: + - name: "id" + required: true + in: "path" + schema: + type: "string" + requestBody: + required: true + description: "Singleton document narrative payload" + content: + application/json: + schema: + type: "object" + properties: + narrative: + type: "object" + description: "Per-type narrative object (e.g. ISMS scope or leadership commitment), validated at runtime by zod" + additionalProperties: true + required: + - "narrative" + responses: + "200": + description: "Narrative saved" + security: + - apikey: [] + summary: "Save a singleton document narrative" + tags: + - "ISMS" + description: "Save a singleton document narrative in Comp AI." + x-mint: + metadata: + title: "Save a singleton document narrative | Comp AI API" + sidebarTitle: "Save a singleton document narrative" + description: "Save a singleton document narrative in Comp AI." + og:title: "Save a singleton document narrative | Comp AI API" + og:description: "Save a singleton document narrative in Comp AI." + x-speakeasy-mcp: + name: "save-narrative" + /v1/isms/profile: + get: + operationId: "IsmsProfileController_getProfile_v1" + parameters: + - name: "frameworkId" + required: true + in: "query" + schema: + type: "string" + responses: + "200": + description: "Wizard profile, defaults and member options" + security: + - apikey: [] + summary: "Get the ISMS wizard profile, defaults and members" + tags: + - "ISMS" + description: "Get the ISMS wizard profile, defaults and members in Comp AI." + x-mint: + metadata: + title: "Get the ISMS wizard profile, defaults and | Comp AI API" + sidebarTitle: "Get the ISMS wizard profile, defaults and members" + description: "Get the ISMS wizard profile, defaults and members in Comp AI." + og:title: "Get the ISMS wizard profile, defaults and | Comp AI API" + og:description: "Get the ISMS wizard profile, defaults and members in Comp AI." + x-speakeasy-mcp: + name: "get-profile" + post: + operationId: "IsmsProfileController_saveProfile_v1" + parameters: [] + requestBody: + required: true + description: "Partial ISMS wizard answers (validated at runtime by zod)" + content: + application/json: + schema: + type: "object" + properties: + frameworkId: + type: "string" + answers: + type: "object" + description: "Deeply-partial wizard answers (any subset of the wizard steps)" + additionalProperties: true + complete: + type: "boolean" + description: "Whether the wizard is being finalized" + required: + - "frameworkId" + - "answers" + responses: + "200": + description: "Saved profile" + security: + - apikey: [] + summary: "Save (partial) ISMS wizard answers" + tags: + - "ISMS" + description: "Save (partial) ISMS wizard answers in Comp AI." + x-mint: + metadata: + title: "Save (partial) ISMS wizard answers | Comp AI API" + sidebarTitle: "Save (partial) ISMS wizard answers" + description: "Save (partial) ISMS wizard answers in Comp AI." + og:title: "Save (partial) ISMS wizard answers | Comp AI API" + og:description: "Save (partial) ISMS wizard answers in Comp AI." + x-speakeasy-mcp: + name: "save-profile" + /v1/isms/generate-all: + post: + operationId: "IsmsProfileController_generateAll_v1" + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/GenerateAllDto" + responses: + "200": + description: "Regenerated ISMS documents" + security: + - apikey: [] + summary: "Ensure and regenerate all ISMS documents" + tags: + - "ISMS" + description: "Ensure and regenerate all ISMS documents in Comp AI." + x-mint: + metadata: + title: "Ensure and regenerate all ISMS documents | Comp AI API" + sidebarTitle: "Ensure and regenerate all ISMS documents" + description: "Ensure and regenerate all ISMS documents in Comp AI." + og:title: "Ensure and regenerate all ISMS documents | Comp AI API" + og:description: "Ensure and regenerate all ISMS documents in Comp AI." + x-speakeasy-mcp: + name: "generate-all" /v1/integrations/connections/providers: get: operationId: "ConnectionsController_listProviders_v1" @@ -15481,6 +16173,11 @@ paths: schema: example: "ctl_abc123def456" type: "string" + - name: "frameworkInstanceId" + required: true + in: "query" + schema: + type: "string" - name: "formType" required: true in: "path" @@ -15501,11 +16198,6 @@ paths: - "tabletop_exercise" - "account_types" type: "string" - - name: "frameworkInstanceId" - required: true - in: "query" - schema: - type: "string" responses: "200": description: "" @@ -16366,6 +17058,7 @@ tags: description: "Create, review, update, and track audit findings, remediation activity, and finding history for an organization." - name: "Frameworks" description: "Manage SOC 2, ISO 27001, HIPAA, GDPR, and custom framework instances, requirements, scores, and sync history." + - name: "ISMS" - name: "Integrations" description: "Connect vendor systems, configure OAuth apps, run compliance checks, sync employees, manage variables, and collect automated evidence." - name: "Knowledge Base" @@ -18808,6 +19501,40 @@ components: type: "string" required: - "emails" + UploadCustomFrameworkBadgeDto: + type: "object" + properties: + customFrameworkId: + type: "string" + description: "Org-authored custom framework ID the badge belongs to" + example: "cfrm_6914cd0e16e4c7dccbb54426" + fileName: + type: "string" + description: "Original file name (PNG, JPEG, or WebP)" + example: "acme-framework-badge.png" + fileType: + type: "string" + description: "MIME type of the image" + example: "image/png" + fileData: + type: "string" + description: "Base64 encoded image content (PNG/JPEG/WebP, max 256KB decoded)" + required: + - "customFrameworkId" + - "fileName" + - "fileType" + - "fileData" + CustomFrameworkBadgeResponseDto: + type: "object" + properties: + success: + type: "boolean" + badgeUrl: + type: "string" + description: "Signed URL to the uploaded badge for immediate display" + required: + - "success" + - "badgeUrl" CreateAccessRequestDto: type: "object" properties: @@ -19192,6 +19919,58 @@ components: ExportSOADocumentDto: type: "object" properties: {} + EnsureIsmsSetupDto: + type: "object" + properties: + frameworkId: + type: "string" + description: "ID of the framework to scope the ISMS setup to" + example: "frk_abc123def456" + required: + - "frameworkId" + LinkIsmsControlsDto: + type: "object" + properties: + controlIds: + description: "IDs of the controls to link to the ISMS document" + example: + - "ctl_abc123def456" + - "ctl_ghi789jkl012" + type: "array" + items: + type: "string" + required: + - "controlIds" + SubmitIsmsForApprovalDto: + type: "object" + properties: + approverId: + type: "string" + description: "Member ID of the approver to submit the ISMS to" + example: "mem_abc123def456" + required: + - "approverId" + ExportIsmsDocumentDto: + type: "object" + properties: + format: + type: "string" + description: "File format to export the ISMS document as" + enum: + - "pdf" + - "docx" + example: "pdf" + required: + - "format" + GenerateAllDto: + type: "object" + properties: + frameworkId: + type: "string" + description: "ID of the framework to generate all ISMS profile documents for" + example: "frk_abc123def456" + required: + - "frameworkId" CreateConnectionDto: type: "object" properties: diff --git a/apps/mcp-server/.speakeasy/workflow.lock b/apps/mcp-server/.speakeasy/workflow.lock index 4ec98925ba..4b57bc066e 100644 --- a/apps/mcp-server/.speakeasy/workflow.lock +++ b/apps/mcp-server/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.777.1 +speakeasyVersion: 1.785.0 sources: Comp AI API: sourceNamespace: comp-ai-api - sourceRevisionDigest: sha256:85bf4b7327ee324c966dc8ad4d902ee16e701b16379577af299fd21a9c0c5512 - sourceBlobDigest: sha256:149837e17543b6537f69321b86578bf74cca0f789b55a93f5edc9813d8c10e6c + sourceRevisionDigest: sha256:7a85bb1b9b3e5f9f1fb02c3aa235925ab56571b89de351675e31af6ae70213a7 + sourceBlobDigest: sha256:06abc466e0092a7aee845553344879075f2411c5190cc0c03664529990a09350 tags: - latest - "1.0" @@ -11,8 +11,8 @@ targets: comp-ai: source: Comp AI API sourceNamespace: comp-ai-api - sourceRevisionDigest: sha256:85bf4b7327ee324c966dc8ad4d902ee16e701b16379577af299fd21a9c0c5512 - sourceBlobDigest: sha256:149837e17543b6537f69321b86578bf74cca0f789b55a93f5edc9813d8c10e6c + sourceRevisionDigest: sha256:7a85bb1b9b3e5f9f1fb02c3aa235925ab56571b89de351675e31af6ae70213a7 + sourceBlobDigest: sha256:06abc466e0092a7aee845553344879075f2411c5190cc0c03664529990a09350 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/apps/mcp-server/README.md b/apps/mcp-server/README.md index 02273972f2..3b68036ab4 100644 --- a/apps/mcp-server/README.md +++ b/apps/mcp-server/README.md @@ -30,9 +30,9 @@ Comp AI API: Compliance automation API for SOC 2, ISO 27001, HIPAA, GDPR, eviden
Claude Desktop -Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.0/mcp-server.mcpb) file: +Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.1/mcp-server.mcpb) file: -Simply drag and drop the [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.0/mcp-server.mcpb) file onto Claude Desktop to install the extension. +Simply drag and drop the [`mcp-server.mcpb`](https://github.com/trycompai/comp/releases/download/v0.2.1/mcp-server.mcpb) file onto Claude Desktop to install the extension. The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup. diff --git a/apps/mcp-server/RELEASES.md b/apps/mcp-server/RELEASES.md index c5eed9cf9a..354bafb14e 100644 --- a/apps/mcp-server/RELEASES.md +++ b/apps/mcp-server/RELEASES.md @@ -38,4 +38,12 @@ Based on: - OpenAPI Doc - Speakeasy CLI 1.777.1 (2.903.2) https://github.com/speakeasy-api/speakeasy ### Generated -- [mcp-typescript v0.2.0] apps/mcp-server \ No newline at end of file +- [mcp-typescript v0.2.0] apps/mcp-server + +## 2026-06-24 20:02:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.785.0 (2.912.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [mcp-typescript v0.2.1] apps/mcp-server \ No newline at end of file diff --git a/apps/mcp-server/manifest.json b/apps/mcp-server/manifest.json index db0fdc1fb6..58b681ade5 100644 --- a/apps/mcp-server/manifest.json +++ b/apps/mcp-server/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": "0.3", "name": "@trycompai/mcp-server", - "version": "0.2.0", + "version": "0.2.1", "description": "", "long_description": "Comp AI API: Compliance automation API for SOC 2, ISO 27001, HIPAA, GDPR, evidence collection, policy workflows, Trust Access, security questionnaires, integrations, cloud checks, and device compliance.", "author": { @@ -668,6 +668,14 @@ "name": "update-custom-framework", "description": "Enable/disable a custom framework on the trust portal and set its status\n\nEnable/disable a custom framework on the trust portal and set its status in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures." }, + { + "name": "upload-custom-framework-badge", + "description": "Upload or replace a custom framework's Trust Portal badge image\n\nStores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility." + }, + { + "name": "remove-custom-framework-badge", + "description": "Remove a custom framework's Trust Portal badge image\n\nRemove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures." + }, { "name": "update-overview", "description": "Update Trust Center overview\n\nUpdate the public Trust Center overview content that explains security posture and compliance status to prospects and customers." @@ -952,6 +960,74 @@ "name": "export-document", "description": "Export ISO 27001 SOA\n\nExport the approved Statement of Applicability document for ISO 27001 auditors, customer reviews, and internal records." }, + { + "name": "isms-ensure-setup", + "description": "Ensure ISMS foundational documents exist\n\nEnsure ISMS foundational documents exist in Comp AI." + }, + { + "name": "get-document", + "description": "Get an ISMS document with its latest version\n\nGet an ISMS document with its latest version in Comp AI." + }, + { + "name": "add-controls", + "description": "Map organization controls to an ISMS document\n\nMap organization controls to an ISMS document in Comp AI." + }, + { + "name": "remove-control", + "description": "Remove a control mapping from an ISMS document\n\nRemove a control mapping from an ISMS document in Comp AI." + }, + { + "name": "generate", + "description": "Derive Context-of-the-Organization issues\n\nDerive Context-of-the-Organization issues in Comp AI." + }, + { + "name": "isms-submit-for-approval", + "description": "Submit an ISMS document for approval\n\nSubmit an ISMS document for approval in Comp AI." + }, + { + "name": "approve", + "description": "Approve an ISMS document\n\nApprove an ISMS document in Comp AI." + }, + { + "name": "decline", + "description": "Decline an ISMS document\n\nDecline an ISMS document in Comp AI." + }, + { + "name": "drift", + "description": "Detect drift against the approved snapshot\n\nDetect drift against the approved snapshot in Comp AI." + }, + { + "name": "isms-export-document", + "description": "Export an ISMS document as PDF or DOCX\n\nExport an ISMS document as PDF or DOCX in Comp AI." + }, + { + "name": "create-row", + "description": "Create a row in an ISMS register\n\nCreate a row in an ISMS register in Comp AI." + }, + { + "name": "update-row", + "description": "Update a row in an ISMS register\n\nUpdate a row in an ISMS register in Comp AI." + }, + { + "name": "delete-row", + "description": "Delete a row in an ISMS register\n\nDelete a row in an ISMS register in Comp AI." + }, + { + "name": "save-narrative", + "description": "Save a singleton document narrative\n\nSave a singleton document narrative in Comp AI." + }, + { + "name": "get-profile", + "description": "Get the ISMS wizard profile, defaults and members\n\nGet the ISMS wizard profile, defaults and members in Comp AI." + }, + { + "name": "save-profile", + "description": "Save (partial) ISMS wizard answers\n\nSave (partial) ISMS wizard answers in Comp AI." + }, + { + "name": "generate-all", + "description": "Ensure and regenerate all ISMS documents\n\nEnsure and regenerate all ISMS documents in Comp AI." + }, { "name": "list-providers", "description": "List integration providers\n\nList available integration providers that can connect to the organization for automated evidence collection and compliance checks." diff --git a/apps/mcp-server/package-lock.json b/apps/mcp-server/package-lock.json index d58a4472d5..d2d56669f2 100644 --- a/apps/mcp-server/package-lock.json +++ b/apps/mcp-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trycompai/mcp-server", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trycompai/mcp-server", - "version": "0.2.0", + "version": "0.2.1", "dependencies": { "@modelcontextprotocol/sdk": "1.26.0", "@stricli/core": "^1.1.2", @@ -2396,9 +2396,9 @@ } }, "node_modules/hono": { - "version": "4.12.23", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.23.tgz", - "integrity": "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==", + "version": "4.12.27", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz", + "integrity": "sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==", "license": "MIT", "engines": { "node": ">=16.9.0" diff --git a/apps/mcp-server/package.json b/apps/mcp-server/package.json index b4ae779d8e..e0a74fef07 100644 --- a/apps/mcp-server/package.json +++ b/apps/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@trycompai/mcp-server", - "version": "0.2.0", + "version": "0.2.1", "author": "Comp AI", "type": "module", "sideEffects": false, @@ -27,7 +27,9 @@ "zod": "^4.0.0" }, "overrides": { - "@modelcontextprotocol/sdk": "1.26.0" + "@modelcontextprotocol/sdk": "1.26.0", + "hono": ">=4.12.25", + "fast-uri": ">=3.1.2" }, "devDependencies": { "@anthropic-ai/mcpb": "^1.2.0", diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerAddControlsV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerAddControlsV1.ts new file mode 100644 index 0000000000..ab89c45576 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerAddControlsV1.ts @@ -0,0 +1,155 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerAddControlsV1Request, + IsmsControllerAddControlsV1Request$zodSchema, +} from "../models/ismscontrolleraddcontrolsv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Map organization controls to an ISMS document + * + * @remarks + * Map organization controls to an ISMS document in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerAddControlsV1( + client$: CompAiCore, + request: IsmsControllerAddControlsV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerAddControlsV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerAddControlsV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/controls")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_addControls_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerApproveV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerApproveV1.ts new file mode 100644 index 0000000000..7ba10d160d --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerApproveV1.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerApproveV1Request, + IsmsControllerApproveV1Request$zodSchema, +} from "../models/ismscontrollerapprovev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Approve an ISMS document + * + * @remarks + * Approve an ISMS document in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerApproveV1( + client$: CompAiCore, + request: IsmsControllerApproveV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerApproveV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerApproveV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/approve")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_approve_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerDeclineV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerDeclineV1.ts new file mode 100644 index 0000000000..08731ea313 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerDeclineV1.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerDeclineV1Request, + IsmsControllerDeclineV1Request$zodSchema, +} from "../models/ismscontrollerdeclinev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Decline an ISMS document + * + * @remarks + * Decline an ISMS document in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerDeclineV1( + client$: CompAiCore, + request: IsmsControllerDeclineV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerDeclineV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerDeclineV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/decline")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_decline_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerDriftV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerDriftV1.ts new file mode 100644 index 0000000000..190393d2ec --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerDriftV1.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerDriftV1Request, + IsmsControllerDriftV1Request$zodSchema, +} from "../models/ismscontrollerdriftv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Detect drift against the approved snapshot + * + * @remarks + * Detect drift against the approved snapshot in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerDriftV1( + client$: CompAiCore, + request: IsmsControllerDriftV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerDriftV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerDriftV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/drift")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_drift_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerEnsureSetupV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerEnsureSetupV1.ts new file mode 100644 index 0000000000..d254e7c52d --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerEnsureSetupV1.ts @@ -0,0 +1,146 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { + EnsureIsmsSetupDto, + EnsureIsmsSetupDto$zodSchema, +} from "../models/ensureismssetupdto.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Ensure ISMS foundational documents exist + * + * @remarks + * Ensure ISMS foundational documents exist in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerEnsureSetupV1( + client$: CompAiCore, + request: EnsureIsmsSetupDto, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: EnsureIsmsSetupDto, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => EnsureIsmsSetupDto$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$, { explode: true }); + const path$ = pathToFunc("/v1/isms/ensure-setup")(); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_ensureSetup_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerExportDocumentV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerExportDocumentV1.ts new file mode 100644 index 0000000000..2e1ab92e91 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerExportDocumentV1.ts @@ -0,0 +1,155 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerExportDocumentV1Request, + IsmsControllerExportDocumentV1Request$zodSchema, +} from "../models/ismscontrollerexportdocumentv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Export an ISMS document as PDF or DOCX + * + * @remarks + * Export an ISMS document as PDF or DOCX in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerExportDocumentV1( + client$: CompAiCore, + request: IsmsControllerExportDocumentV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerExportDocumentV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerExportDocumentV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/export")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_exportDocument_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerGenerateV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerGenerateV1.ts new file mode 100644 index 0000000000..05c0a184c6 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerGenerateV1.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerGenerateV1Request, + IsmsControllerGenerateV1Request$zodSchema, +} from "../models/ismscontrollergeneratev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Derive Context-of-the-Organization issues + * + * @remarks + * Derive Context-of-the-Organization issues in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerGenerateV1( + client$: CompAiCore, + request: IsmsControllerGenerateV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerGenerateV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerGenerateV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/generate")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_generate_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerGetDocumentV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerGetDocumentV1.ts new file mode 100644 index 0000000000..1adc970464 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerGetDocumentV1.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerGetDocumentV1Request, + IsmsControllerGetDocumentV1Request$zodSchema, +} from "../models/ismscontrollergetdocumentv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get an ISMS document with its latest version + * + * @remarks + * Get an ISMS document with its latest version in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerGetDocumentV1( + client$: CompAiCore, + request: IsmsControllerGetDocumentV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerGetDocumentV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerGetDocumentV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_getDocument_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerRemoveControlV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerRemoveControlV1.ts new file mode 100644 index 0000000000..a5fce0085b --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerRemoveControlV1.ts @@ -0,0 +1,158 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerRemoveControlV1Request, + IsmsControllerRemoveControlV1Request$zodSchema, +} from "../models/ismscontrollerremovecontrolv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Remove a control mapping from an ISMS document + * + * @remarks + * Remove a control mapping from an ISMS document in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerRemoveControlV1( + client$: CompAiCore, + request: IsmsControllerRemoveControlV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerRemoveControlV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => IsmsControllerRemoveControlV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + controlId: encodeSimple("controlId", payload$.controlId, { + explode: false, + charEncoding: "percent", + }), + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/controls/{controlId}")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_removeControl_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSControllerSubmitForApprovalV1.ts b/apps/mcp-server/src/funcs/ismsISMSControllerSubmitForApprovalV1.ts new file mode 100644 index 0000000000..1dfecfd976 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSControllerSubmitForApprovalV1.ts @@ -0,0 +1,156 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsControllerSubmitForApprovalV1Request, + IsmsControllerSubmitForApprovalV1Request$zodSchema, +} from "../models/ismscontrollersubmitforapprovalv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Submit an ISMS document for approval + * + * @remarks + * Submit an ISMS document for approval in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSControllerSubmitForApprovalV1( + client$: CompAiCore, + request: IsmsControllerSubmitForApprovalV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsControllerSubmitForApprovalV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsControllerSubmitForApprovalV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/submit-for-approval")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsController_submitForApproval_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSProfileControllerGenerateAllV1.ts b/apps/mcp-server/src/funcs/ismsISMSProfileControllerGenerateAllV1.ts new file mode 100644 index 0000000000..8efc493f5e --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSProfileControllerGenerateAllV1.ts @@ -0,0 +1,146 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + GenerateAllDto, + GenerateAllDto$zodSchema, +} from "../models/generatealldto.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Ensure and regenerate all ISMS documents + * + * @remarks + * Ensure and regenerate all ISMS documents in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSProfileControllerGenerateAllV1( + client$: CompAiCore, + request: GenerateAllDto, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: GenerateAllDto, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => GenerateAllDto$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$, { explode: true }); + const path$ = pathToFunc("/v1/isms/generate-all")(); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsProfileController_generateAll_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSProfileControllerGetProfileV1.ts b/apps/mcp-server/src/funcs/ismsISMSProfileControllerGetProfileV1.ts new file mode 100644 index 0000000000..b7d98494d4 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSProfileControllerGetProfileV1.ts @@ -0,0 +1,150 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsProfileControllerGetProfileV1Request, + IsmsProfileControllerGetProfileV1Request$zodSchema, +} from "../models/ismsprofilecontrollergetprofilev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get the ISMS wizard profile, defaults and members + * + * @remarks + * Get the ISMS wizard profile, defaults and members in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSProfileControllerGetProfileV1( + client$: CompAiCore, + request: IsmsProfileControllerGetProfileV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsProfileControllerGetProfileV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsProfileControllerGetProfileV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + const path$ = pathToFunc("/v1/isms/profile")(); + const query$ = encodeFormQuery({ + "frameworkId": payload$.frameworkId, + }); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsProfileController_getProfile_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + query: query$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSProfileControllerSaveProfileV1.ts b/apps/mcp-server/src/funcs/ismsISMSProfileControllerSaveProfileV1.ts new file mode 100644 index 0000000000..a43b4ae030 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSProfileControllerSaveProfileV1.ts @@ -0,0 +1,147 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsProfileControllerSaveProfileV1Request, + IsmsProfileControllerSaveProfileV1Request$zodSchema, +} from "../models/ismsprofilecontrollersaveprofilev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Save (partial) ISMS wizard answers + * + * @remarks + * Save (partial) ISMS wizard answers in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSProfileControllerSaveProfileV1( + client$: CompAiCore, + request: IsmsProfileControllerSaveProfileV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsProfileControllerSaveProfileV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsProfileControllerSaveProfileV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$, { explode: true }); + const path$ = pathToFunc("/v1/isms/profile")(); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsProfileController_saveProfile_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSRegistersControllerCreateRowV1.ts b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerCreateRowV1.ts new file mode 100644 index 0000000000..7d67d84870 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerCreateRowV1.ts @@ -0,0 +1,160 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsRegistersControllerCreateRowV1Request, + IsmsRegistersControllerCreateRowV1Request$zodSchema, +} from "../models/ismsregisterscontrollercreaterowv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Create a row in an ISMS register + * + * @remarks + * Create a row in an ISMS register in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSRegistersControllerCreateRowV1( + client$: CompAiCore, + request: IsmsRegistersControllerCreateRowV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsRegistersControllerCreateRowV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsRegistersControllerCreateRowV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + register: encodeSimple("register", payload$.register, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/registers/{register}")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsRegistersController_createRow_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSRegistersControllerDeleteRowV1.ts b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerDeleteRowV1.ts new file mode 100644 index 0000000000..0bb4140af9 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerDeleteRowV1.ts @@ -0,0 +1,159 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsRegistersControllerDeleteRowV1Request, + IsmsRegistersControllerDeleteRowV1Request$zodSchema, +} from "../models/ismsregisterscontrollerdeleterowv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Delete a row in an ISMS register + * + * @remarks + * Delete a row in an ISMS register in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSRegistersControllerDeleteRowV1( + client$: CompAiCore, + request: IsmsRegistersControllerDeleteRowV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsRegistersControllerDeleteRowV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsRegistersControllerDeleteRowV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + + const pathParams$ = { + register: encodeSimple("register", payload$.register, { + explode: false, + charEncoding: "percent", + }), + rowId: encodeSimple("rowId", payload$.rowId, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/registers/{register}/{rowId}")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsRegistersController_deleteRow_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSRegistersControllerSaveNarrativeV1.ts b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerSaveNarrativeV1.ts new file mode 100644 index 0000000000..a364b31d25 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerSaveNarrativeV1.ts @@ -0,0 +1,156 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsRegistersControllerSaveNarrativeV1Request, + IsmsRegistersControllerSaveNarrativeV1Request$zodSchema, +} from "../models/ismsregisterscontrollersavenarrativev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Save a singleton document narrative + * + * @remarks + * Save a singleton document narrative in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSRegistersControllerSaveNarrativeV1( + client$: CompAiCore, + request: IsmsRegistersControllerSaveNarrativeV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsRegistersControllerSaveNarrativeV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsRegistersControllerSaveNarrativeV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + id: encodeSimple("id", payload$.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/documents/{id}/narrative")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsRegistersController_saveNarrative_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/ismsISMSRegistersControllerUpdateRowV1.ts b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerUpdateRowV1.ts new file mode 100644 index 0000000000..73636597c0 --- /dev/null +++ b/apps/mcp-server/src/funcs/ismsISMSRegistersControllerUpdateRowV1.ts @@ -0,0 +1,160 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + IsmsRegistersControllerUpdateRowV1Request, + IsmsRegistersControllerUpdateRowV1Request$zodSchema, +} from "../models/ismsregisterscontrollerupdaterowv1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Update a row in an ISMS register + * + * @remarks + * Update a row in an ISMS register in Comp AI. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function ismsISMSRegistersControllerUpdateRowV1( + client$: CompAiCore, + request: IsmsRegistersControllerUpdateRowV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: IsmsRegistersControllerUpdateRowV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + IsmsRegistersControllerUpdateRowV1Request$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$.body, { explode: true }); + + const pathParams$ = { + register: encodeSimple("register", payload$.register, { + explode: false, + charEncoding: "percent", + }), + rowId: encodeSimple("rowId", payload$.rowId, { + explode: false, + charEncoding: "percent", + }), + }; + const path$ = pathToFunc("/v1/isms/registers/{register}/{rowId}")( + pathParams$, + ); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "IsmsRegistersController_updateRow_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "PATCH", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts b/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts new file mode 100644 index 0000000000..a3864e4c14 --- /dev/null +++ b/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts @@ -0,0 +1,152 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + TrustPortalControllerRemoveCustomFrameworkBadgeV1Request, + TrustPortalControllerRemoveCustomFrameworkBadgeV1Request$zodSchema, +} from "../models/trustportalcontrollerremovecustomframeworkbadgev1op.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Remove a custom framework's Trust Portal badge image + * + * @remarks + * Remove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1( + client$: CompAiCore, + request: TrustPortalControllerRemoveCustomFrameworkBadgeV1Request, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: TrustPortalControllerRemoveCustomFrameworkBadgeV1Request, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => + TrustPortalControllerRemoveCustomFrameworkBadgeV1Request$zodSchema.parse( + value$, + ), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = null; + const path$ = pathToFunc("/v1/trust-portal/custom-frameworks/badge")(); + const query$ = encodeFormQuery({ + "customFrameworkId": payload$.customFrameworkId, + }); + + const headers$ = new Headers(compactMap({ + Accept: "*/*", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "TrustPortalController_removeCustomFrameworkBadge_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + query: query$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts b/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts new file mode 100644 index 0000000000..51a2f1ef1c --- /dev/null +++ b/apps/mcp-server/src/funcs/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts @@ -0,0 +1,146 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { CompAiCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { APIError } from "../models/errors/apierror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import { + UploadCustomFrameworkBadgeDto, + UploadCustomFrameworkBadgeDto$zodSchema, +} from "../models/uploadcustomframeworkbadgedto.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Upload or replace a custom framework's Trust Portal badge image + * + * @remarks + * Stores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility. + * + * If set, this operation will use {@link Security.apikey} from the global security. + */ +export function trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1( + client$: CompAiCore, + request: UploadCustomFrameworkBadgeDto, + options?: RequestOptions, +): APIPromise< + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + return new APIPromise($do( + client$, + request, + options, + )); +} + +async function $do( + client$: CompAiCore, + request: UploadCustomFrameworkBadgeDto, + options?: RequestOptions, +): Promise< + [ + Result< + Response, + | APIError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >, + APICall, + ] +> { + const parsed$ = safeParse( + request, + (value$) => UploadCustomFrameworkBadgeDto$zodSchema.parse(value$), + "Input validation failed", + ); + if (!parsed$.ok) { + return [parsed$, { status: "invalid" }]; + } + const payload$ = parsed$.value; + const body$ = encodeJSON("body", payload$, { explode: true }); + const path$ = pathToFunc("/v1/trust-portal/custom-frameworks/badge")(); + + const headers$ = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + const securityInput = await extractSecurity(client$._options.security); + const requestSecurity = resolveGlobalSecurity(securityInput, [0]); + + const context = { + options: client$._options, + baseURL: options?.serverURL ?? client$._baseURL ?? "", + operationID: "TrustPortalController_uploadCustomFrameworkBadge_v1", + oAuth2Scopes: null, + resolvedSecurity: requestSecurity, + securitySource: client$._options.security, + retryConfig: options?.retries + || client$._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || [ + "429", + "500", + "502", + "503", + "504", + ], + }; + + const requestRes = client$._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path$, + headers: headers$, + body: body$, + userAgent: client$._options.userAgent, + timeoutMs: options?.timeoutMs || client$._options.timeoutMs + || 120000, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req$ = requestRes.value; + + const doResult = await client$._do(req$, { + context, + errorCodes: [], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req$ }]; + } + return [doResult, { + status: "complete", + "request": req$, + response: doResult.value, + }]; +} diff --git a/apps/mcp-server/src/landing-page.ts b/apps/mcp-server/src/landing-page.ts index 6e99225096..7fa965187f 100644 --- a/apps/mcp-server/src/landing-page.ts +++ b/apps/mcp-server/src/landing-page.ts @@ -930,7 +930,7 @@ http_headers = { "apikey" = "YOUR_APIKEY" }`;

Instructions

One-click installation for Claude Desktop users

diff --git a/apps/mcp-server/src/lib/config.ts b/apps/mcp-server/src/lib/config.ts index def4f2dcd8..87f1298a7a 100644 --- a/apps/mcp-server/src/lib/config.ts +++ b/apps/mcp-server/src/lib/config.ts @@ -65,8 +65,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.0", - sdkVersion: "0.2.0", - genVersion: "2.903.2", + sdkVersion: "0.2.1", + genVersion: "2.912.1", userAgent: - "speakeasy-sdk/mcp-typescript 0.2.0 2.903.2 1.0 @trycompai/mcp-server", + "speakeasy-sdk/mcp-typescript 0.2.1 2.912.1 1.0 @trycompai/mcp-server", } as const; diff --git a/apps/mcp-server/src/lib/retries.ts b/apps/mcp-server/src/lib/retries.ts index e3ce9aba72..21a647e1e9 100644 --- a/apps/mcp-server/src/lib/retries.ts +++ b/apps/mcp-server/src/lib/retries.ts @@ -194,6 +194,14 @@ async function retryBackoff( } function retryIntervalFromResponse(res: Response): number { + const retryAfterMsVal = res.headers.get("retry-after-ms"); + if (retryAfterMsVal) { + const parsedMs = Number(retryAfterMsVal); + if (Number.isFinite(parsedMs) && parsedMs >= 0) { + return parsedMs; + } + } + const retryVal = res.headers.get("retry-after") || ""; if (!retryVal) { return 0; diff --git a/apps/mcp-server/src/mcp-server/mcp-server.ts b/apps/mcp-server/src/mcp-server/mcp-server.ts index c3521094ca..376f67f80f 100644 --- a/apps/mcp-server/src/mcp-server/mcp-server.ts +++ b/apps/mcp-server/src/mcp-server/mcp-server.ts @@ -21,7 +21,7 @@ const routes = buildRouteMap({ export const app = buildApplication(routes, { name: "mcp", versionInfo: { - currentVersion: "0.2.0", + currentVersion: "0.2.1", }, }); diff --git a/apps/mcp-server/src/mcp-server/server.ts b/apps/mcp-server/src/mcp-server/server.ts index 502eff487d..e1e5786a84 100644 --- a/apps/mcp-server/src/mcp-server/server.ts +++ b/apps/mcp-server/src/mcp-server/server.ts @@ -127,6 +127,23 @@ import { tool$integrationsVariablesControllerFetchVariableOptionsV1 } from "./to import { tool$integrationsVariablesControllerGetConnectionVariablesV1 } from "./tools/integrationsVariablesControllerGetConnectionVariablesV1.js"; import { tool$integrationsVariablesControllerGetProviderVariablesV1 } from "./tools/integrationsVariablesControllerGetProviderVariablesV1.js"; import { tool$integrationsVariablesControllerSaveConnectionVariablesV1 } from "./tools/integrationsVariablesControllerSaveConnectionVariablesV1.js"; +import { tool$ismsISMSControllerAddControlsV1 } from "./tools/ismsISMSControllerAddControlsV1.js"; +import { tool$ismsISMSControllerApproveV1 } from "./tools/ismsISMSControllerApproveV1.js"; +import { tool$ismsISMSControllerDeclineV1 } from "./tools/ismsISMSControllerDeclineV1.js"; +import { tool$ismsISMSControllerDriftV1 } from "./tools/ismsISMSControllerDriftV1.js"; +import { tool$ismsISMSControllerEnsureSetupV1 } from "./tools/ismsISMSControllerEnsureSetupV1.js"; +import { tool$ismsISMSControllerExportDocumentV1 } from "./tools/ismsISMSControllerExportDocumentV1.js"; +import { tool$ismsISMSControllerGenerateV1 } from "./tools/ismsISMSControllerGenerateV1.js"; +import { tool$ismsISMSControllerGetDocumentV1 } from "./tools/ismsISMSControllerGetDocumentV1.js"; +import { tool$ismsISMSControllerRemoveControlV1 } from "./tools/ismsISMSControllerRemoveControlV1.js"; +import { tool$ismsISMSControllerSubmitForApprovalV1 } from "./tools/ismsISMSControllerSubmitForApprovalV1.js"; +import { tool$ismsISMSProfileControllerGenerateAllV1 } from "./tools/ismsISMSProfileControllerGenerateAllV1.js"; +import { tool$ismsISMSProfileControllerGetProfileV1 } from "./tools/ismsISMSProfileControllerGetProfileV1.js"; +import { tool$ismsISMSProfileControllerSaveProfileV1 } from "./tools/ismsISMSProfileControllerSaveProfileV1.js"; +import { tool$ismsISMSRegistersControllerCreateRowV1 } from "./tools/ismsISMSRegistersControllerCreateRowV1.js"; +import { tool$ismsISMSRegistersControllerDeleteRowV1 } from "./tools/ismsISMSRegistersControllerDeleteRowV1.js"; +import { tool$ismsISMSRegistersControllerSaveNarrativeV1 } from "./tools/ismsISMSRegistersControllerSaveNarrativeV1.js"; +import { tool$ismsISMSRegistersControllerUpdateRowV1 } from "./tools/ismsISMSRegistersControllerUpdateRowV1.js"; import { tool$knowledgeBaseKnowledgeBaseControllerCreateRunTokenV1 } from "./tools/knowledgeBaseKnowledgeBaseControllerCreateRunTokenV1.js"; import { tool$knowledgeBaseKnowledgeBaseControllerDeleteAllManualAnswersV1 } from "./tools/knowledgeBaseKnowledgeBaseControllerDeleteAllManualAnswersV1.js"; import { tool$knowledgeBaseKnowledgeBaseControllerDeleteDocumentV1 } from "./tools/knowledgeBaseKnowledgeBaseControllerDeleteDocumentV1.js"; @@ -340,6 +357,7 @@ import { tool$trustPortalTrustPortalControllerListCustomFrameworksV1 } from "./t import { tool$trustPortalTrustPortalControllerListCustomLinksV1 } from "./tools/trustPortalTrustPortalControllerListCustomLinksV1.js"; import { tool$trustPortalTrustPortalControllerListTrustDocumentsV1 } from "./tools/trustPortalTrustPortalControllerListTrustDocumentsV1.js"; import { tool$trustPortalTrustPortalControllerListVendorsV1 } from "./tools/trustPortalTrustPortalControllerListVendorsV1.js"; +import { tool$trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1 } from "./tools/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.js"; import { tool$trustPortalTrustPortalControllerRemoveFaviconV1 } from "./tools/trustPortalTrustPortalControllerRemoveFaviconV1.js"; import { tool$trustPortalTrustPortalControllerReorderCustomLinksV1 } from "./tools/trustPortalTrustPortalControllerReorderCustomLinksV1.js"; import { tool$trustPortalTrustPortalControllerTogglePortalV1 } from "./tools/trustPortalTrustPortalControllerTogglePortalV1.js"; @@ -352,6 +370,7 @@ import { tool$trustPortalTrustPortalControllerUpdateFrameworksV1 } from "./tools import { tool$trustPortalTrustPortalControllerUpdateOverviewV1 } from "./tools/trustPortalTrustPortalControllerUpdateOverviewV1.js"; import { tool$trustPortalTrustPortalControllerUpdateVendorTrustSettingsV1 } from "./tools/trustPortalTrustPortalControllerUpdateVendorTrustSettingsV1.js"; import { tool$trustPortalTrustPortalControllerUploadComplianceResourceV1 } from "./tools/trustPortalTrustPortalControllerUploadComplianceResourceV1.js"; +import { tool$trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1 } from "./tools/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.js"; import { tool$trustPortalTrustPortalControllerUploadFaviconV1 } from "./tools/trustPortalTrustPortalControllerUploadFaviconV1.js"; import { tool$trustPortalTrustPortalControllerUploadTrustDocumentV1 } from "./tools/trustPortalTrustPortalControllerUploadTrustDocumentV1.js"; import { tool$uploadsUploadsControllerCreateUploadUrlV1 } from "./tools/uploadsUploadsControllerCreateUploadUrlV1.js"; @@ -376,7 +395,7 @@ export function createMCPServer(deps: { }) { const server = new McpServer({ name: "CompAi", - version: "0.2.0", + version: "0.2.1", }); const getClient = deps.getSDK || (() => @@ -580,6 +599,8 @@ export function createMCPServer(deps: { tool(tool$trustPortalTrustPortalControllerUpdateFrameworksV1); tool(tool$trustPortalTrustPortalControllerListCustomFrameworksV1); tool(tool$trustPortalTrustPortalControllerUpdateCustomFrameworkV1); + tool(tool$trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1); + tool(tool$trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1); tool(tool$trustPortalTrustPortalControllerUpdateOverviewV1); tool(tool$trustPortalTrustPortalControllerGetOverviewV1); tool(tool$trustPortalTrustPortalControllerCreateCustomLinkV1); @@ -651,6 +672,23 @@ export function createMCPServer(deps: { tool(tool$soaSOAControllerDeclineDocumentV1); tool(tool$soaSOAControllerSubmitForApprovalV1); tool(tool$soaSOAControllerExportDocumentV1); + tool(tool$ismsISMSControllerEnsureSetupV1); + tool(tool$ismsISMSControllerGetDocumentV1); + tool(tool$ismsISMSControllerAddControlsV1); + tool(tool$ismsISMSControllerRemoveControlV1); + tool(tool$ismsISMSControllerGenerateV1); + tool(tool$ismsISMSControllerSubmitForApprovalV1); + tool(tool$ismsISMSControllerApproveV1); + tool(tool$ismsISMSControllerDeclineV1); + tool(tool$ismsISMSControllerDriftV1); + tool(tool$ismsISMSControllerExportDocumentV1); + tool(tool$ismsISMSRegistersControllerCreateRowV1); + tool(tool$ismsISMSRegistersControllerUpdateRowV1); + tool(tool$ismsISMSRegistersControllerDeleteRowV1); + tool(tool$ismsISMSRegistersControllerSaveNarrativeV1); + tool(tool$ismsISMSProfileControllerGetProfileV1); + tool(tool$ismsISMSProfileControllerSaveProfileV1); + tool(tool$ismsISMSProfileControllerGenerateAllV1); tool(tool$integrationsConnectionsControllerListProvidersV1); tool(tool$integrationsConnectionsControllerGetProviderV1); tool(tool$integrationsConnectionsControllerListConnectionsV1); diff --git a/apps/mcp-server/src/mcp-server/tools.ts b/apps/mcp-server/src/mcp-server/tools.ts index 98c62c2411..e2a1e15ef2 100644 --- a/apps/mcp-server/src/mcp-server/tools.ts +++ b/apps/mcp-server/src/mcp-server/tools.ts @@ -343,6 +343,8 @@ export function registerDynamicTools( if (def.args) { const jsonSchema = z.toJSONSchema(z.object(def.args), { target: "draft-2020-12", + io: "input", + unrepresentable: "any", }); schemaText += JSON.stringify(jsonSchema, null, 2); } else { diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerAddControlsV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerAddControlsV1.ts new file mode 100644 index 0000000000..c9086fb194 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerAddControlsV1.ts @@ -0,0 +1,43 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerAddControlsV1 } from "../../funcs/ismsISMSControllerAddControlsV1.js"; +import { IsmsControllerAddControlsV1Request$zodSchema } from "../../models/ismscontrolleraddcontrolsv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerAddControlsV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerAddControlsV1: ToolDefinition = + { + name: "add-controls", + description: `Map organization controls to an ISMS document + +Map organization controls to an ISMS document in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerAddControlsV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, + }; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerApproveV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerApproveV1.ts new file mode 100644 index 0000000000..7b5b46b248 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerApproveV1.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerApproveV1 } from "../../funcs/ismsISMSControllerApproveV1.js"; +import { IsmsControllerApproveV1Request$zodSchema } from "../../models/ismscontrollerapprovev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerApproveV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerApproveV1: ToolDefinition = { + name: "approve", + description: `Approve an ISMS document + +Approve an ISMS document in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerApproveV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDeclineV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDeclineV1.ts new file mode 100644 index 0000000000..fa188f50fb --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDeclineV1.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerDeclineV1 } from "../../funcs/ismsISMSControllerDeclineV1.js"; +import { IsmsControllerDeclineV1Request$zodSchema } from "../../models/ismscontrollerdeclinev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerDeclineV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerDeclineV1: ToolDefinition = { + name: "decline", + description: `Decline an ISMS document + +Decline an ISMS document in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerDeclineV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDriftV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDriftV1.ts new file mode 100644 index 0000000000..e13c79aebc --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerDriftV1.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerDriftV1 } from "../../funcs/ismsISMSControllerDriftV1.js"; +import { IsmsControllerDriftV1Request$zodSchema } from "../../models/ismscontrollerdriftv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerDriftV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerDriftV1: ToolDefinition = { + name: "drift", + description: `Detect drift against the approved snapshot + +Detect drift against the approved snapshot in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerDriftV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerEnsureSetupV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerEnsureSetupV1.ts new file mode 100644 index 0000000000..6e456383e6 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerEnsureSetupV1.ts @@ -0,0 +1,43 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerEnsureSetupV1 } from "../../funcs/ismsISMSControllerEnsureSetupV1.js"; +import { EnsureIsmsSetupDto$zodSchema } from "../../models/ensureismssetupdto.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: EnsureIsmsSetupDto$zodSchema, +}; + +export const tool$ismsISMSControllerEnsureSetupV1: ToolDefinition = + { + name: "isms-ensure-setup", + description: `Ensure ISMS foundational documents exist + +Ensure ISMS foundational documents exist in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerEnsureSetupV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, + }; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerExportDocumentV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerExportDocumentV1.ts new file mode 100644 index 0000000000..9aefbd8d4b --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerExportDocumentV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerExportDocumentV1 } from "../../funcs/ismsISMSControllerExportDocumentV1.js"; +import { IsmsControllerExportDocumentV1Request$zodSchema } from "../../models/ismscontrollerexportdocumentv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerExportDocumentV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerExportDocumentV1: ToolDefinition< + typeof args +> = { + name: "isms-export-document", + description: `Export an ISMS document as PDF or DOCX + +Export an ISMS document as PDF or DOCX in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerExportDocumentV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGenerateV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGenerateV1.ts new file mode 100644 index 0000000000..fa873aba3b --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGenerateV1.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerGenerateV1 } from "../../funcs/ismsISMSControllerGenerateV1.js"; +import { IsmsControllerGenerateV1Request$zodSchema } from "../../models/ismscontrollergeneratev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerGenerateV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerGenerateV1: ToolDefinition = { + name: "generate", + description: `Derive Context-of-the-Organization issues + +Derive Context-of-the-Organization issues in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerGenerateV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGetDocumentV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGetDocumentV1.ts new file mode 100644 index 0000000000..a03a487dea --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerGetDocumentV1.ts @@ -0,0 +1,43 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerGetDocumentV1 } from "../../funcs/ismsISMSControllerGetDocumentV1.js"; +import { IsmsControllerGetDocumentV1Request$zodSchema } from "../../models/ismscontrollergetdocumentv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerGetDocumentV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerGetDocumentV1: ToolDefinition = + { + name: "get-document", + description: `Get an ISMS document with its latest version + +Get an ISMS document with its latest version in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerGetDocumentV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, + }; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerRemoveControlV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerRemoveControlV1.ts new file mode 100644 index 0000000000..c218418cc3 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerRemoveControlV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerRemoveControlV1 } from "../../funcs/ismsISMSControllerRemoveControlV1.js"; +import { IsmsControllerRemoveControlV1Request$zodSchema } from "../../models/ismscontrollerremovecontrolv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerRemoveControlV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerRemoveControlV1: ToolDefinition< + typeof args +> = { + name: "remove-control", + description: `Remove a control mapping from an ISMS document + +Remove a control mapping from an ISMS document in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerRemoveControlV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerSubmitForApprovalV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerSubmitForApprovalV1.ts new file mode 100644 index 0000000000..da84e376c7 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSControllerSubmitForApprovalV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSControllerSubmitForApprovalV1 } from "../../funcs/ismsISMSControllerSubmitForApprovalV1.js"; +import { IsmsControllerSubmitForApprovalV1Request$zodSchema } from "../../models/ismscontrollersubmitforapprovalv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsControllerSubmitForApprovalV1Request$zodSchema, +}; + +export const tool$ismsISMSControllerSubmitForApprovalV1: ToolDefinition< + typeof args +> = { + name: "isms-submit-for-approval", + description: `Submit an ISMS document for approval + +Submit an ISMS document for approval in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSControllerSubmitForApprovalV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGenerateAllV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGenerateAllV1.ts new file mode 100644 index 0000000000..05e912a0c8 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGenerateAllV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSProfileControllerGenerateAllV1 } from "../../funcs/ismsISMSProfileControllerGenerateAllV1.js"; +import { GenerateAllDto$zodSchema } from "../../models/generatealldto.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: GenerateAllDto$zodSchema, +}; + +export const tool$ismsISMSProfileControllerGenerateAllV1: ToolDefinition< + typeof args +> = { + name: "generate-all", + description: `Ensure and regenerate all ISMS documents + +Ensure and regenerate all ISMS documents in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSProfileControllerGenerateAllV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGetProfileV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGetProfileV1.ts new file mode 100644 index 0000000000..0d16e72c66 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerGetProfileV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSProfileControllerGetProfileV1 } from "../../funcs/ismsISMSProfileControllerGetProfileV1.js"; +import { IsmsProfileControllerGetProfileV1Request$zodSchema } from "../../models/ismsprofilecontrollergetprofilev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsProfileControllerGetProfileV1Request$zodSchema, +}; + +export const tool$ismsISMSProfileControllerGetProfileV1: ToolDefinition< + typeof args +> = { + name: "get-profile", + description: `Get the ISMS wizard profile, defaults and members + +Get the ISMS wizard profile, defaults and members in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSProfileControllerGetProfileV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerSaveProfileV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerSaveProfileV1.ts new file mode 100644 index 0000000000..8fcf21eca2 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSProfileControllerSaveProfileV1.ts @@ -0,0 +1,46 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSProfileControllerSaveProfileV1 } from "../../funcs/ismsISMSProfileControllerSaveProfileV1.js"; +import { IsmsProfileControllerSaveProfileV1Request$zodSchema } from "../../models/ismsprofilecontrollersaveprofilev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsProfileControllerSaveProfileV1Request$zodSchema.describe( + `Partial ISMS wizard answers (validated at runtime by zod)`, + ), +}; + +export const tool$ismsISMSProfileControllerSaveProfileV1: ToolDefinition< + typeof args +> = { + name: "save-profile", + description: `Save (partial) ISMS wizard answers + +Save (partial) ISMS wizard answers in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSProfileControllerSaveProfileV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerCreateRowV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerCreateRowV1.ts new file mode 100644 index 0000000000..35a13a865b --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerCreateRowV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSRegistersControllerCreateRowV1 } from "../../funcs/ismsISMSRegistersControllerCreateRowV1.js"; +import { IsmsRegistersControllerCreateRowV1Request$zodSchema } from "../../models/ismsregisterscontrollercreaterowv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsRegistersControllerCreateRowV1Request$zodSchema, +}; + +export const tool$ismsISMSRegistersControllerCreateRowV1: ToolDefinition< + typeof args +> = { + name: "create-row", + description: `Create a row in an ISMS register + +Create a row in an ISMS register in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSRegistersControllerCreateRowV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerDeleteRowV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerDeleteRowV1.ts new file mode 100644 index 0000000000..9129cacc83 --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerDeleteRowV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSRegistersControllerDeleteRowV1 } from "../../funcs/ismsISMSRegistersControllerDeleteRowV1.js"; +import { IsmsRegistersControllerDeleteRowV1Request$zodSchema } from "../../models/ismsregisterscontrollerdeleterowv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsRegistersControllerDeleteRowV1Request$zodSchema, +}; + +export const tool$ismsISMSRegistersControllerDeleteRowV1: ToolDefinition< + typeof args +> = { + name: "delete-row", + description: `Delete a row in an ISMS register + +Delete a row in an ISMS register in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSRegistersControllerDeleteRowV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerSaveNarrativeV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerSaveNarrativeV1.ts new file mode 100644 index 0000000000..16c227101a --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerSaveNarrativeV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSRegistersControllerSaveNarrativeV1 } from "../../funcs/ismsISMSRegistersControllerSaveNarrativeV1.js"; +import { IsmsRegistersControllerSaveNarrativeV1Request$zodSchema } from "../../models/ismsregisterscontrollersavenarrativev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsRegistersControllerSaveNarrativeV1Request$zodSchema, +}; + +export const tool$ismsISMSRegistersControllerSaveNarrativeV1: ToolDefinition< + typeof args +> = { + name: "save-narrative", + description: `Save a singleton document narrative + +Save a singleton document narrative in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSRegistersControllerSaveNarrativeV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerUpdateRowV1.ts b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerUpdateRowV1.ts new file mode 100644 index 0000000000..bf63704dba --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/ismsISMSRegistersControllerUpdateRowV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { ismsISMSRegistersControllerUpdateRowV1 } from "../../funcs/ismsISMSRegistersControllerUpdateRowV1.js"; +import { IsmsRegistersControllerUpdateRowV1Request$zodSchema } from "../../models/ismsregisterscontrollerupdaterowv1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: IsmsRegistersControllerUpdateRowV1Request$zodSchema, +}; + +export const tool$ismsISMSRegistersControllerUpdateRowV1: ToolDefinition< + typeof args +> = { + name: "update-row", + description: `Update a row in an ISMS register + +Update a row in an ISMS register in Comp AI.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = await ismsISMSRegistersControllerUpdateRowV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, +}; diff --git a/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts b/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts new file mode 100644 index 0000000000..8ae35e90ac --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1 } from "../../funcs/trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1.js"; +import { TrustPortalControllerRemoveCustomFrameworkBadgeV1Request$zodSchema } from "../../models/trustportalcontrollerremovecustomframeworkbadgev1op.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: TrustPortalControllerRemoveCustomFrameworkBadgeV1Request$zodSchema, +}; + +export const tool$trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1: + ToolDefinition = { + name: "remove-custom-framework-badge", + description: `Remove a custom framework's Trust Portal badge image + +Remove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = + await trustPortalTrustPortalControllerRemoveCustomFrameworkBadgeV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, + }; diff --git a/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts b/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts new file mode 100644 index 0000000000..1080dc23ef --- /dev/null +++ b/apps/mcp-server/src/mcp-server/tools/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.ts @@ -0,0 +1,45 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1 } from "../../funcs/trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1.js"; +import { UploadCustomFrameworkBadgeDto$zodSchema } from "../../models/uploadcustomframeworkbadgedto.js"; +import { formatResult, ToolDefinition } from "../tools.js"; + +const args = { + request: UploadCustomFrameworkBadgeDto$zodSchema, +}; + +export const tool$trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1: + ToolDefinition = { + name: "upload-custom-framework-badge", + description: + `Upload or replace a custom framework's Trust Portal badge image + +Stores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility.`, + annotations: { + "title": "", + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false, + "readOnlyHint": false, + }, + args, + tool: async (client, args, ctx) => { + const [result] = + await trustPortalTrustPortalControllerUploadCustomFrameworkBadgeV1( + client, + args.request, + { fetchOptions: { signal: ctx.signal } }, + ).$inspect(); + + if (!result.ok) { + return { + content: [{ type: "text", text: result.error.message }], + isError: true, + }; + } + + return formatResult(result.value); + }, + }; diff --git a/apps/mcp-server/src/models/controlscontrollerunlinkdocumenttypev1op.ts b/apps/mcp-server/src/models/controlscontrollerunlinkdocumenttypev1op.ts index 1298a1804f..70efb8dea0 100644 --- a/apps/mcp-server/src/models/controlscontrollerunlinkdocumenttypev1op.ts +++ b/apps/mcp-server/src/models/controlscontrollerunlinkdocumenttypev1op.ts @@ -55,8 +55,8 @@ export const ControlsControllerUnlinkDocumentTypeV1FormType$zodSchema = z.enum([ export type ControlsControllerUnlinkDocumentTypeV1Request = { id: string; - formType: ControlsControllerUnlinkDocumentTypeV1FormType; frameworkInstanceId: string; + formType: ControlsControllerUnlinkDocumentTypeV1FormType; }; export const ControlsControllerUnlinkDocumentTypeV1Request$zodSchema: z.ZodType< diff --git a/apps/mcp-server/src/models/customframeworkbadgeresponsedto.ts b/apps/mcp-server/src/models/customframeworkbadgeresponsedto.ts new file mode 100644 index 0000000000..22b5d78b31 --- /dev/null +++ b/apps/mcp-server/src/models/customframeworkbadgeresponsedto.ts @@ -0,0 +1,19 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type CustomFrameworkBadgeResponseDto = { + success: boolean; + badgeUrl: string; +}; + +export const CustomFrameworkBadgeResponseDto$zodSchema: z.ZodType< + CustomFrameworkBadgeResponseDto +> = z.object({ + badgeUrl: z.string().describe( + "Signed URL to the uploaded badge for immediate display", + ), + success: z.boolean(), +}); diff --git a/apps/mcp-server/src/models/ensureismssetupdto.ts b/apps/mcp-server/src/models/ensureismssetupdto.ts new file mode 100644 index 0000000000..7e25189a5b --- /dev/null +++ b/apps/mcp-server/src/models/ensureismssetupdto.ts @@ -0,0 +1,14 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type EnsureIsmsSetupDto = { frameworkId: string }; + +export const EnsureIsmsSetupDto$zodSchema: z.ZodType = z + .object({ + frameworkId: z.string().describe( + "ID of the framework to scope the ISMS setup to", + ), + }); diff --git a/apps/mcp-server/src/models/exportismsdocumentdto.ts b/apps/mcp-server/src/models/exportismsdocumentdto.ts new file mode 100644 index 0000000000..283e5373cb --- /dev/null +++ b/apps/mcp-server/src/models/exportismsdocumentdto.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { ClosedEnum } from "../types/enums.js"; + +/** + * File format to export the ISMS document as + */ +export const Format = { + Pdf: "pdf", + Docx: "docx", +} as const; +/** + * File format to export the ISMS document as + */ +export type Format = ClosedEnum; + +export const Format$zodSchema = z.enum([ + "pdf", + "docx", +]).describe("File format to export the ISMS document as"); + +export type ExportIsmsDocumentDto = { format: Format }; + +export const ExportIsmsDocumentDto$zodSchema: z.ZodType = + z.object({ + format: Format$zodSchema.describe( + "File format to export the ISMS document as", + ), + }); diff --git a/apps/mcp-server/src/models/generatealldto.ts b/apps/mcp-server/src/models/generatealldto.ts new file mode 100644 index 0000000000..13cf5e8955 --- /dev/null +++ b/apps/mcp-server/src/models/generatealldto.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type GenerateAllDto = { frameworkId: string }; + +export const GenerateAllDto$zodSchema: z.ZodType = z.object({ + frameworkId: z.string().describe( + "ID of the framework to generate all ISMS profile documents for", + ), +}); diff --git a/apps/mcp-server/src/models/ismscontrolleraddcontrolsv1op.ts b/apps/mcp-server/src/models/ismscontrolleraddcontrolsv1op.ts new file mode 100644 index 0000000000..663a2d8b2e --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrolleraddcontrolsv1op.ts @@ -0,0 +1,21 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { + LinkIsmsControlsDto, + LinkIsmsControlsDto$zodSchema, +} from "./linkismscontrolsdto.js"; + +export type IsmsControllerAddControlsV1Request = { + id: string; + body: LinkIsmsControlsDto; +}; + +export const IsmsControllerAddControlsV1Request$zodSchema: z.ZodType< + IsmsControllerAddControlsV1Request +> = z.object({ + body: LinkIsmsControlsDto$zodSchema, + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollerapprovev1op.ts b/apps/mcp-server/src/models/ismscontrollerapprovev1op.ts new file mode 100644 index 0000000000..35947d2365 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollerapprovev1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerApproveV1Request = { id: string }; + +export const IsmsControllerApproveV1Request$zodSchema: z.ZodType< + IsmsControllerApproveV1Request +> = z.object({ + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollerdeclinev1op.ts b/apps/mcp-server/src/models/ismscontrollerdeclinev1op.ts new file mode 100644 index 0000000000..5020fb108d --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollerdeclinev1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerDeclineV1Request = { id: string }; + +export const IsmsControllerDeclineV1Request$zodSchema: z.ZodType< + IsmsControllerDeclineV1Request +> = z.object({ + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollerdriftv1op.ts b/apps/mcp-server/src/models/ismscontrollerdriftv1op.ts new file mode 100644 index 0000000000..14d16ab189 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollerdriftv1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerDriftV1Request = { id: string }; + +export const IsmsControllerDriftV1Request$zodSchema: z.ZodType< + IsmsControllerDriftV1Request +> = z.object({ + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollerexportdocumentv1op.ts b/apps/mcp-server/src/models/ismscontrollerexportdocumentv1op.ts new file mode 100644 index 0000000000..046d3efc42 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollerexportdocumentv1op.ts @@ -0,0 +1,21 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { + ExportIsmsDocumentDto, + ExportIsmsDocumentDto$zodSchema, +} from "./exportismsdocumentdto.js"; + +export type IsmsControllerExportDocumentV1Request = { + id: string; + body: ExportIsmsDocumentDto; +}; + +export const IsmsControllerExportDocumentV1Request$zodSchema: z.ZodType< + IsmsControllerExportDocumentV1Request +> = z.object({ + body: ExportIsmsDocumentDto$zodSchema, + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollergeneratev1op.ts b/apps/mcp-server/src/models/ismscontrollergeneratev1op.ts new file mode 100644 index 0000000000..44d91e0f24 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollergeneratev1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerGenerateV1Request = { id: string }; + +export const IsmsControllerGenerateV1Request$zodSchema: z.ZodType< + IsmsControllerGenerateV1Request +> = z.object({ + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollergetdocumentv1op.ts b/apps/mcp-server/src/models/ismscontrollergetdocumentv1op.ts new file mode 100644 index 0000000000..3bf8745319 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollergetdocumentv1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerGetDocumentV1Request = { id: string }; + +export const IsmsControllerGetDocumentV1Request$zodSchema: z.ZodType< + IsmsControllerGetDocumentV1Request +> = z.object({ + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollerremovecontrolv1op.ts b/apps/mcp-server/src/models/ismscontrollerremovecontrolv1op.ts new file mode 100644 index 0000000000..915f8a6a83 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollerremovecontrolv1op.ts @@ -0,0 +1,17 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsControllerRemoveControlV1Request = { + id: string; + controlId: string; +}; + +export const IsmsControllerRemoveControlV1Request$zodSchema: z.ZodType< + IsmsControllerRemoveControlV1Request +> = z.object({ + controlId: z.string(), + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismscontrollersubmitforapprovalv1op.ts b/apps/mcp-server/src/models/ismscontrollersubmitforapprovalv1op.ts new file mode 100644 index 0000000000..17c3dcb878 --- /dev/null +++ b/apps/mcp-server/src/models/ismscontrollersubmitforapprovalv1op.ts @@ -0,0 +1,21 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { + SubmitIsmsForApprovalDto, + SubmitIsmsForApprovalDto$zodSchema, +} from "./submitismsforapprovaldto.js"; + +export type IsmsControllerSubmitForApprovalV1Request = { + id: string; + body: SubmitIsmsForApprovalDto; +}; + +export const IsmsControllerSubmitForApprovalV1Request$zodSchema: z.ZodType< + IsmsControllerSubmitForApprovalV1Request +> = z.object({ + body: SubmitIsmsForApprovalDto$zodSchema, + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismsprofilecontrollergetprofilev1op.ts b/apps/mcp-server/src/models/ismsprofilecontrollergetprofilev1op.ts new file mode 100644 index 0000000000..f65bc824fc --- /dev/null +++ b/apps/mcp-server/src/models/ismsprofilecontrollergetprofilev1op.ts @@ -0,0 +1,13 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsProfileControllerGetProfileV1Request = { frameworkId: string }; + +export const IsmsProfileControllerGetProfileV1Request$zodSchema: z.ZodType< + IsmsProfileControllerGetProfileV1Request +> = z.object({ + frameworkId: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismsprofilecontrollersaveprofilev1op.ts b/apps/mcp-server/src/models/ismsprofilecontrollersaveprofilev1op.ts new file mode 100644 index 0000000000..ee9f9cc32b --- /dev/null +++ b/apps/mcp-server/src/models/ismsprofilecontrollersaveprofilev1op.ts @@ -0,0 +1,26 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +/** + * Partial ISMS wizard answers (validated at runtime by zod) + */ +export type IsmsProfileControllerSaveProfileV1Request = { + frameworkId: string; + answers: { [k: string]: any }; + complete?: boolean | undefined; +}; + +export const IsmsProfileControllerSaveProfileV1Request$zodSchema: z.ZodType< + IsmsProfileControllerSaveProfileV1Request +> = z.object({ + answers: z.record(z.string(), z.any()).describe( + "Deeply-partial wizard answers (any subset of the wizard steps)", + ), + complete: z.boolean().optional().describe( + "Whether the wizard is being finalized", + ), + frameworkId: z.string(), +}).describe("Partial ISMS wizard answers (validated at runtime by zod)"); diff --git a/apps/mcp-server/src/models/ismsregisterscontrollercreaterowv1op.ts b/apps/mcp-server/src/models/ismsregisterscontrollercreaterowv1op.ts new file mode 100644 index 0000000000..69e20134cd --- /dev/null +++ b/apps/mcp-server/src/models/ismsregisterscontrollercreaterowv1op.ts @@ -0,0 +1,100 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { ClosedEnum } from "../types/enums.js"; + +export const IsmsRegistersControllerCreateRowV1Kind = { + Internal: "internal", + External: "external", +} as const; +export type IsmsRegistersControllerCreateRowV1Kind = ClosedEnum< + typeof IsmsRegistersControllerCreateRowV1Kind +>; + +export const IsmsRegistersControllerCreateRowV1Kind$zodSchema = z.enum([ + "internal", + "external", +]); + +export const IsmsRegistersControllerCreateRowV1Status = { + NotStarted: "not_started", + OnTrack: "on_track", + AtRisk: "at_risk", + Met: "met", +} as const; +export type IsmsRegistersControllerCreateRowV1Status = ClosedEnum< + typeof IsmsRegistersControllerCreateRowV1Status +>; + +export const IsmsRegistersControllerCreateRowV1Status$zodSchema = z.enum([ + "not_started", + "on_track", + "at_risk", + "met", +]); + +/** + * Register row fields (per-register; validated at runtime by zod) + */ +export type IsmsRegistersControllerCreateRowV1RequestBody = { + kind?: IsmsRegistersControllerCreateRowV1Kind | undefined; + category?: string | undefined; + description?: string | undefined; + effect?: string | undefined; + name?: string | undefined; + needsExpectations?: string | undefined; + interestedPartyId?: string | undefined; + partyName?: string | undefined; + requirement?: string | undefined; + treatment?: string | undefined; + objective?: string | undefined; + target?: string | undefined; + ownerMemberId?: string | undefined; + cadence?: string | undefined; + plan?: string | undefined; + measurementMethod?: string | undefined; + status?: IsmsRegistersControllerCreateRowV1Status | undefined; + position?: number | undefined; +}; + +export const IsmsRegistersControllerCreateRowV1RequestBody$zodSchema: z.ZodType< + IsmsRegistersControllerCreateRowV1RequestBody +> = z.object({ + cadence: z.string().optional(), + category: z.string().optional(), + description: z.string().optional(), + effect: z.string().optional(), + interestedPartyId: z.string().optional(), + kind: IsmsRegistersControllerCreateRowV1Kind$zodSchema.optional(), + measurementMethod: z.string().optional(), + name: z.string().optional(), + needsExpectations: z.string().optional(), + objective: z.string().optional(), + ownerMemberId: z.string().optional(), + partyName: z.string().optional(), + plan: z.string().optional(), + position: z.int().optional(), + requirement: z.string().optional(), + status: IsmsRegistersControllerCreateRowV1Status$zodSchema.optional(), + target: z.string().optional(), + treatment: z.string().optional(), +}).describe("Register row fields (per-register; validated at runtime by zod)"); + +export type IsmsRegistersControllerCreateRowV1Request = { + id: string; + register: string; + body: IsmsRegistersControllerCreateRowV1RequestBody; +}; + +export const IsmsRegistersControllerCreateRowV1Request$zodSchema: z.ZodType< + IsmsRegistersControllerCreateRowV1Request +> = z.object({ + body: z.lazy(() => IsmsRegistersControllerCreateRowV1RequestBody$zodSchema) + .describe( + "Register row fields (per-register; validated at runtime by zod)", + ), + id: z.string(), + register: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismsregisterscontrollerdeleterowv1op.ts b/apps/mcp-server/src/models/ismsregisterscontrollerdeleterowv1op.ts new file mode 100644 index 0000000000..0b36a2850f --- /dev/null +++ b/apps/mcp-server/src/models/ismsregisterscontrollerdeleterowv1op.ts @@ -0,0 +1,17 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type IsmsRegistersControllerDeleteRowV1Request = { + register: string; + rowId: string; +}; + +export const IsmsRegistersControllerDeleteRowV1Request$zodSchema: z.ZodType< + IsmsRegistersControllerDeleteRowV1Request +> = z.object({ + register: z.string(), + rowId: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismsregisterscontrollersavenarrativev1op.ts b/apps/mcp-server/src/models/ismsregisterscontrollersavenarrativev1op.ts new file mode 100644 index 0000000000..560ed38a1f --- /dev/null +++ b/apps/mcp-server/src/models/ismsregisterscontrollersavenarrativev1op.ts @@ -0,0 +1,33 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +/** + * Singleton document narrative payload + */ +export type IsmsRegistersControllerSaveNarrativeV1RequestBody = { + narrative: { [k: string]: any }; +}; + +export const IsmsRegistersControllerSaveNarrativeV1RequestBody$zodSchema: + z.ZodType = z.object({ + narrative: z.record(z.string(), z.any()).describe( + "Per-type narrative object (e.g. ISMS scope or leadership commitment), validated at runtime by zod", + ), + }).describe("Singleton document narrative payload"); + +export type IsmsRegistersControllerSaveNarrativeV1Request = { + id: string; + body: IsmsRegistersControllerSaveNarrativeV1RequestBody; +}; + +export const IsmsRegistersControllerSaveNarrativeV1Request$zodSchema: z.ZodType< + IsmsRegistersControllerSaveNarrativeV1Request +> = z.object({ + body: z.lazy(() => + IsmsRegistersControllerSaveNarrativeV1RequestBody$zodSchema + ).describe("Singleton document narrative payload"), + id: z.string(), +}); diff --git a/apps/mcp-server/src/models/ismsregisterscontrollerupdaterowv1op.ts b/apps/mcp-server/src/models/ismsregisterscontrollerupdaterowv1op.ts new file mode 100644 index 0000000000..73ba642b21 --- /dev/null +++ b/apps/mcp-server/src/models/ismsregisterscontrollerupdaterowv1op.ts @@ -0,0 +1,100 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { ClosedEnum } from "../types/enums.js"; + +export const IsmsRegistersControllerUpdateRowV1Kind = { + Internal: "internal", + External: "external", +} as const; +export type IsmsRegistersControllerUpdateRowV1Kind = ClosedEnum< + typeof IsmsRegistersControllerUpdateRowV1Kind +>; + +export const IsmsRegistersControllerUpdateRowV1Kind$zodSchema = z.enum([ + "internal", + "external", +]); + +export const IsmsRegistersControllerUpdateRowV1Status = { + NotStarted: "not_started", + OnTrack: "on_track", + AtRisk: "at_risk", + Met: "met", +} as const; +export type IsmsRegistersControllerUpdateRowV1Status = ClosedEnum< + typeof IsmsRegistersControllerUpdateRowV1Status +>; + +export const IsmsRegistersControllerUpdateRowV1Status$zodSchema = z.enum([ + "not_started", + "on_track", + "at_risk", + "met", +]); + +/** + * Register row fields (per-register; validated at runtime by zod) + */ +export type IsmsRegistersControllerUpdateRowV1RequestBody = { + kind?: IsmsRegistersControllerUpdateRowV1Kind | undefined; + category?: string | undefined; + description?: string | undefined; + effect?: string | undefined; + name?: string | undefined; + needsExpectations?: string | undefined; + interestedPartyId?: string | undefined; + partyName?: string | undefined; + requirement?: string | undefined; + treatment?: string | undefined; + objective?: string | undefined; + target?: string | undefined; + ownerMemberId?: string | undefined; + cadence?: string | undefined; + plan?: string | undefined; + measurementMethod?: string | undefined; + status?: IsmsRegistersControllerUpdateRowV1Status | undefined; + position?: number | undefined; +}; + +export const IsmsRegistersControllerUpdateRowV1RequestBody$zodSchema: z.ZodType< + IsmsRegistersControllerUpdateRowV1RequestBody +> = z.object({ + cadence: z.string().optional(), + category: z.string().optional(), + description: z.string().optional(), + effect: z.string().optional(), + interestedPartyId: z.string().optional(), + kind: IsmsRegistersControllerUpdateRowV1Kind$zodSchema.optional(), + measurementMethod: z.string().optional(), + name: z.string().optional(), + needsExpectations: z.string().optional(), + objective: z.string().optional(), + ownerMemberId: z.string().optional(), + partyName: z.string().optional(), + plan: z.string().optional(), + position: z.int().optional(), + requirement: z.string().optional(), + status: IsmsRegistersControllerUpdateRowV1Status$zodSchema.optional(), + target: z.string().optional(), + treatment: z.string().optional(), +}).describe("Register row fields (per-register; validated at runtime by zod)"); + +export type IsmsRegistersControllerUpdateRowV1Request = { + register: string; + rowId: string; + body: IsmsRegistersControllerUpdateRowV1RequestBody; +}; + +export const IsmsRegistersControllerUpdateRowV1Request$zodSchema: z.ZodType< + IsmsRegistersControllerUpdateRowV1Request +> = z.object({ + body: z.lazy(() => IsmsRegistersControllerUpdateRowV1RequestBody$zodSchema) + .describe( + "Register row fields (per-register; validated at runtime by zod)", + ), + register: z.string(), + rowId: z.string(), +}); diff --git a/apps/mcp-server/src/models/linkismscontrolsdto.ts b/apps/mcp-server/src/models/linkismscontrolsdto.ts new file mode 100644 index 0000000000..9ec14430ae --- /dev/null +++ b/apps/mcp-server/src/models/linkismscontrolsdto.ts @@ -0,0 +1,14 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type LinkIsmsControlsDto = { controlIds: Array }; + +export const LinkIsmsControlsDto$zodSchema: z.ZodType = z + .object({ + controlIds: z.array(z.string()).describe( + "IDs of the controls to link to the ISMS document", + ), + }); diff --git a/apps/mcp-server/src/models/submitismsforapprovaldto.ts b/apps/mcp-server/src/models/submitismsforapprovaldto.ts new file mode 100644 index 0000000000..c586872f44 --- /dev/null +++ b/apps/mcp-server/src/models/submitismsforapprovaldto.ts @@ -0,0 +1,15 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type SubmitIsmsForApprovalDto = { approverId: string }; + +export const SubmitIsmsForApprovalDto$zodSchema: z.ZodType< + SubmitIsmsForApprovalDto +> = z.object({ + approverId: z.string().describe( + "Member ID of the approver to submit the ISMS to", + ), +}); diff --git a/apps/mcp-server/src/models/trustportalcontrollerremovecustomframeworkbadgev1op.ts b/apps/mcp-server/src/models/trustportalcontrollerremovecustomframeworkbadgev1op.ts new file mode 100644 index 0000000000..bc53334336 --- /dev/null +++ b/apps/mcp-server/src/models/trustportalcontrollerremovecustomframeworkbadgev1op.ts @@ -0,0 +1,17 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type TrustPortalControllerRemoveCustomFrameworkBadgeV1Request = { + customFrameworkId: string; +}; + +export const TrustPortalControllerRemoveCustomFrameworkBadgeV1Request$zodSchema: + z.ZodType = z + .object({ + customFrameworkId: z.string().describe( + "Org-authored custom framework ID whose badge to remove", + ), + }); diff --git a/apps/mcp-server/src/models/uploadcustomframeworkbadgedto.ts b/apps/mcp-server/src/models/uploadcustomframeworkbadgedto.ts new file mode 100644 index 0000000000..2b46d4b6fd --- /dev/null +++ b/apps/mcp-server/src/models/uploadcustomframeworkbadgedto.ts @@ -0,0 +1,25 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; + +export type UploadCustomFrameworkBadgeDto = { + customFrameworkId: string; + fileName: string; + fileType: string; + fileData: string; +}; + +export const UploadCustomFrameworkBadgeDto$zodSchema: z.ZodType< + UploadCustomFrameworkBadgeDto +> = z.object({ + customFrameworkId: z.string().describe( + "Org-authored custom framework ID the badge belongs to", + ), + fileData: z.string().describe( + "Base64 encoded image content (PNG/JPEG/WebP, max 256KB decoded)", + ), + fileName: z.string().describe("Original file name (PNG, JPEG, or WebP)"), + fileType: z.string().describe("MIME type of the image"), +}); diff --git a/apps/mcp-server/src/tool-names.ts b/apps/mcp-server/src/tool-names.ts index 684c1bcdd8..10a3e6a2d8 100644 --- a/apps/mcp-server/src/tool-names.ts +++ b/apps/mcp-server/src/tool-names.ts @@ -628,6 +628,14 @@ export const toolNames: Array<{ name: string; description: string }>= [ "name": "update-custom-framework", "description": "Enable/disable a custom framework on the trust portal and set its status\n\nEnable/disable a custom framework on the trust portal and set its status in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures." }, + { + "name": "upload-custom-framework-badge", + "description": "Upload or replace a custom framework's Trust Portal badge image\n\nStores a PNG/JPEG/WebP badge (max 256KB) in the organization assets bucket. Does not change the framework's portal visibility." + }, + { + "name": "remove-custom-framework-badge", + "description": "Remove a custom framework's Trust Portal badge image\n\nRemove a custom framework's Trust Portal badge image in Comp AI. Configure the live Trust Center, custom domain, public overview, FAQs, compliance resources, documents, links, and vendor disclosures." + }, { "name": "update-overview", "description": "Update Trust Center overview\n\nUpdate the public Trust Center overview content that explains security posture and compliance status to prospects and customers." @@ -912,6 +920,74 @@ export const toolNames: Array<{ name: string; description: string }>= [ "name": "export-document", "description": "Export ISO 27001 SOA\n\nExport the approved Statement of Applicability document for ISO 27001 auditors, customer reviews, and internal records." }, + { + "name": "isms-ensure-setup", + "description": "Ensure ISMS foundational documents exist\n\nEnsure ISMS foundational documents exist in Comp AI." + }, + { + "name": "get-document", + "description": "Get an ISMS document with its latest version\n\nGet an ISMS document with its latest version in Comp AI." + }, + { + "name": "add-controls", + "description": "Map organization controls to an ISMS document\n\nMap organization controls to an ISMS document in Comp AI." + }, + { + "name": "remove-control", + "description": "Remove a control mapping from an ISMS document\n\nRemove a control mapping from an ISMS document in Comp AI." + }, + { + "name": "generate", + "description": "Derive Context-of-the-Organization issues\n\nDerive Context-of-the-Organization issues in Comp AI." + }, + { + "name": "isms-submit-for-approval", + "description": "Submit an ISMS document for approval\n\nSubmit an ISMS document for approval in Comp AI." + }, + { + "name": "approve", + "description": "Approve an ISMS document\n\nApprove an ISMS document in Comp AI." + }, + { + "name": "decline", + "description": "Decline an ISMS document\n\nDecline an ISMS document in Comp AI." + }, + { + "name": "drift", + "description": "Detect drift against the approved snapshot\n\nDetect drift against the approved snapshot in Comp AI." + }, + { + "name": "isms-export-document", + "description": "Export an ISMS document as PDF or DOCX\n\nExport an ISMS document as PDF or DOCX in Comp AI." + }, + { + "name": "create-row", + "description": "Create a row in an ISMS register\n\nCreate a row in an ISMS register in Comp AI." + }, + { + "name": "update-row", + "description": "Update a row in an ISMS register\n\nUpdate a row in an ISMS register in Comp AI." + }, + { + "name": "delete-row", + "description": "Delete a row in an ISMS register\n\nDelete a row in an ISMS register in Comp AI." + }, + { + "name": "save-narrative", + "description": "Save a singleton document narrative\n\nSave a singleton document narrative in Comp AI." + }, + { + "name": "get-profile", + "description": "Get the ISMS wizard profile, defaults and members\n\nGet the ISMS wizard profile, defaults and members in Comp AI." + }, + { + "name": "save-profile", + "description": "Save (partial) ISMS wizard answers\n\nSave (partial) ISMS wizard answers in Comp AI." + }, + { + "name": "generate-all", + "description": "Ensure and regenerate all ISMS documents\n\nEnsure and regenerate all ISMS documents in Comp AI." + }, { "name": "list-providers", "description": "List integration providers\n\nList available integration providers that can connect to the organization for automated evidence collection and compliance checks." diff --git a/apps/mcp-server/src/types/async.ts b/apps/mcp-server/src/types/async.ts index 689dba5de5..1543b95cf7 100644 --- a/apps/mcp-server/src/types/async.ts +++ b/apps/mcp-server/src/types/async.ts @@ -21,16 +21,17 @@ export type APICall = export class APIPromise implements Promise { readonly #promise: Promise<[T, APICall]>; - readonly #unwrapped: Promise; + #unwrapped: Promise | null; readonly [Symbol.toStringTag] = "APIPromise"; constructor(p: [T, APICall] | Promise<[T, APICall]>) { this.#promise = p instanceof Promise ? p : Promise.resolve(p); - this.#unwrapped = - p instanceof Promise - ? this.#promise.then(([value]) => value) - : Promise.resolve(p[0]); + this.#unwrapped = p instanceof Promise ? null : Promise.resolve(p[0]); + } + + #getUnwrapped(): Promise { + return (this.#unwrapped ??= this.#promise.then(([value]) => value)); } then( @@ -55,11 +56,11 @@ export class APIPromise implements Promise { | null | undefined, ): Promise { - return this.#unwrapped.catch(onrejected); + return this.#getUnwrapped().catch(onrejected); } finally(onfinally?: (() => void) | null | undefined): Promise { - return this.#unwrapped.finally(onfinally); + return this.#getUnwrapped().finally(onfinally); } $inspect(): Promise<[T, APICall]> {