@leaflow/sdk 0.188.0 → 0.190.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/dist/account/v1/generated/functions.d.ts +113 -1
  2. package/dist/account/v1/generated/functions.js +126 -0
  3. package/dist/account/v1/generated/models.d.ts +74 -0
  4. package/dist/account/v1/generated/models.js +8 -0
  5. package/dist/account/v1/generated/schemas.zod.d.ts +56 -0
  6. package/dist/account/v1/generated/schemas.zod.js +63 -0
  7. package/dist/account/v1/generated/validators/acceptConsentsRequestBody.zod.d.ts +4 -0
  8. package/dist/account/v1/generated/validators/acceptConsentsRequestBody.zod.js +4 -0
  9. package/dist/account/v1/generated/validators/acceptInvitationByTokenRequestBody.zod.d.ts +4 -0
  10. package/dist/account/v1/generated/validators/acceptInvitationByTokenRequestBody.zod.js +4 -0
  11. package/dist/account/v1/generated/validators/acceptedInvitationResponseBody.zod.d.ts +4 -0
  12. package/dist/account/v1/generated/validators/acceptedInvitationResponseBody.zod.js +4 -0
  13. package/dist/account/v1/generated/validators/accountDeletionObjectionResource.zod.d.ts +4 -0
  14. package/dist/account/v1/generated/validators/accountDeletionObjectionResource.zod.js +4 -0
  15. package/dist/account/v1/generated/validators/accountDeletionResource.zod.d.ts +4 -0
  16. package/dist/account/v1/generated/validators/accountDeletionResource.zod.js +4 -0
  17. package/dist/account/v1/generated/validators/accountDeletionState.zod.d.ts +4 -0
  18. package/dist/account/v1/generated/validators/accountDeletionState.zod.js +4 -0
  19. package/dist/account/v1/generated/validators/accountResource.zod.d.ts +4 -0
  20. package/dist/account/v1/generated/validators/accountResource.zod.js +4 -0
  21. package/dist/account/v1/generated/validators/agreementListResponseBody.zod.d.ts +4 -0
  22. package/dist/account/v1/generated/validators/agreementListResponseBody.zod.js +4 -0
  23. package/dist/account/v1/generated/validators/agreementResource.zod.d.ts +4 -0
  24. package/dist/account/v1/generated/validators/agreementResource.zod.js +4 -0
  25. package/dist/account/v1/generated/validators/consentBody.zod.d.ts +4 -0
  26. package/dist/account/v1/generated/validators/consentBody.zod.js +4 -0
  27. package/dist/account/v1/generated/validators/consentListResponseBody.zod.d.ts +4 -0
  28. package/dist/account/v1/generated/validators/consentListResponseBody.zod.js +4 -0
  29. package/dist/account/v1/generated/validators/consentResource.zod.d.ts +4 -0
  30. package/dist/account/v1/generated/validators/consentResource.zod.js +4 -0
  31. package/dist/account/v1/generated/validators/countryOption.zod.d.ts +4 -0
  32. package/dist/account/v1/generated/validators/countryOption.zod.js +4 -0
  33. package/dist/account/v1/generated/validators/createProjectRequestBody.zod.d.ts +4 -0
  34. package/dist/account/v1/generated/validators/createProjectRequestBody.zod.js +4 -0
  35. package/dist/account/v1/generated/validators/createSSHKeyRequestBody.zod.d.ts +38 -0
  36. package/dist/account/v1/generated/validators/createSSHKeyRequestBody.zod.js +40 -0
  37. package/dist/account/v1/generated/validators/cursorPagination.zod.d.ts +4 -0
  38. package/dist/account/v1/generated/validators/cursorPagination.zod.js +4 -0
  39. package/dist/account/v1/generated/validators/error.zod.d.ts +4 -0
  40. package/dist/account/v1/generated/validators/error.zod.js +4 -0
  41. package/dist/account/v1/generated/validators/errorStatus.zod.d.ts +4 -0
  42. package/dist/account/v1/generated/validators/errorStatus.zod.js +4 -0
  43. package/dist/account/v1/generated/validators/fieldViolation.zod.d.ts +4 -0
  44. package/dist/account/v1/generated/validators/fieldViolation.zod.js +4 -0
  45. package/dist/account/v1/generated/validators/grantResource.zod.d.ts +4 -0
  46. package/dist/account/v1/generated/validators/grantResource.zod.js +4 -0
  47. package/dist/account/v1/generated/validators/identityVerificationResource.zod.d.ts +4 -0
  48. package/dist/account/v1/generated/validators/identityVerificationResource.zod.js +4 -0
  49. package/dist/account/v1/generated/validators/invitationPreviewResource.zod.d.ts +4 -0
  50. package/dist/account/v1/generated/validators/invitationPreviewResource.zod.js +4 -0
  51. package/dist/account/v1/generated/validators/invitationResource.zod.d.ts +4 -0
  52. package/dist/account/v1/generated/validators/invitationResource.zod.js +4 -0
  53. package/dist/account/v1/generated/validators/languageOption.zod.d.ts +4 -0
  54. package/dist/account/v1/generated/validators/languageOption.zod.js +4 -0
  55. package/dist/account/v1/generated/validators/lengthAwarePageInvitationResource.zod.d.ts +4 -0
  56. package/dist/account/v1/generated/validators/lengthAwarePageInvitationResource.zod.js +4 -0
  57. package/dist/account/v1/generated/validators/lengthAwarePageProjectAccessResource.zod.d.ts +4 -0
  58. package/dist/account/v1/generated/validators/lengthAwarePageProjectAccessResource.zod.js +4 -0
  59. package/dist/account/v1/generated/validators/lengthAwarePageSSHKeyResource.zod.d.ts +49 -0
  60. package/dist/account/v1/generated/validators/lengthAwarePageSSHKeyResource.zod.js +37 -0
  61. package/dist/account/v1/generated/validators/listMyInvitationsParams.zod.d.ts +4 -0
  62. package/dist/account/v1/generated/validators/listMyInvitationsParams.zod.js +4 -0
  63. package/dist/account/v1/generated/validators/listProjectsParams.zod.d.ts +4 -0
  64. package/dist/account/v1/generated/validators/listProjectsParams.zod.js +4 -0
  65. package/dist/account/v1/generated/validators/listSshKeysParams.zod.d.ts +45 -0
  66. package/dist/account/v1/generated/validators/listSshKeysParams.zod.js +47 -0
  67. package/dist/account/v1/generated/validators/locale.zod.d.ts +4 -0
  68. package/dist/account/v1/generated/validators/locale.zod.js +4 -0
  69. package/dist/account/v1/generated/validators/localeOptionsResource.zod.d.ts +4 -0
  70. package/dist/account/v1/generated/validators/localeOptionsResource.zod.js +4 -0
  71. package/dist/account/v1/generated/validators/offsetPagination.zod.d.ts +4 -0
  72. package/dist/account/v1/generated/validators/offsetPagination.zod.js +4 -0
  73. package/dist/account/v1/generated/validators/previewInvitationByTokenParams.zod.d.ts +4 -0
  74. package/dist/account/v1/generated/validators/previewInvitationByTokenParams.zod.js +4 -0
  75. package/dist/account/v1/generated/validators/projectAccessList.zod.d.ts +4 -0
  76. package/dist/account/v1/generated/validators/projectAccessList.zod.js +4 -0
  77. package/dist/account/v1/generated/validators/projectAccessResource.zod.d.ts +4 -0
  78. package/dist/account/v1/generated/validators/projectAccessResource.zod.js +4 -0
  79. package/dist/account/v1/generated/validators/projectResource.zod.d.ts +4 -0
  80. package/dist/account/v1/generated/validators/projectResource.zod.js +4 -0
  81. package/dist/account/v1/generated/validators/projectSlugAvailabilityResource.zod.d.ts +4 -0
  82. package/dist/account/v1/generated/validators/projectSlugAvailabilityResource.zod.js +4 -0
  83. package/dist/account/v1/generated/validators/projectStatus.zod.d.ts +4 -0
  84. package/dist/account/v1/generated/validators/projectStatus.zod.js +4 -0
  85. package/dist/account/v1/generated/validators/projectTraitResource.zod.d.ts +4 -0
  86. package/dist/account/v1/generated/validators/projectTraitResource.zod.js +4 -0
  87. package/dist/account/v1/generated/validators/registerRequestBody.zod.d.ts +4 -0
  88. package/dist/account/v1/generated/validators/registerRequestBody.zod.js +4 -0
  89. package/dist/account/v1/generated/validators/renameSSHKeyRequestBody.zod.d.ts +36 -0
  90. package/dist/account/v1/generated/validators/renameSSHKeyRequestBody.zod.js +34 -0
  91. package/dist/account/v1/generated/validators/requestAccountDeletionParams.zod.d.ts +4 -0
  92. package/dist/account/v1/generated/validators/requestAccountDeletionParams.zod.js +4 -0
  93. package/dist/account/v1/generated/validators/resourceRefResource.zod.d.ts +4 -0
  94. package/dist/account/v1/generated/validators/resourceRefResource.zod.js +4 -0
  95. package/dist/account/v1/generated/validators/ruleResource.zod.d.ts +4 -0
  96. package/dist/account/v1/generated/validators/ruleResource.zod.js +4 -0
  97. package/dist/account/v1/generated/validators/sSHKeyResource.zod.d.ts +44 -0
  98. package/dist/account/v1/generated/validators/sSHKeyResource.zod.js +41 -0
  99. package/dist/account/v1/generated/validators/scopedTokenResponseBody.zod.d.ts +4 -0
  100. package/dist/account/v1/generated/validators/scopedTokenResponseBody.zod.js +4 -0
  101. package/dist/account/v1/generated/validators/searchProjectsRequestBody.zod.d.ts +4 -0
  102. package/dist/account/v1/generated/validators/searchProjectsRequestBody.zod.js +4 -0
  103. package/dist/account/v1/generated/validators/settingsResource.zod.d.ts +4 -0
  104. package/dist/account/v1/generated/validators/settingsResource.zod.js +4 -0
  105. package/dist/account/v1/generated/validators/submitIdentityVerificationRequestBody.zod.d.ts +4 -0
  106. package/dist/account/v1/generated/validators/submitIdentityVerificationRequestBody.zod.js +4 -0
  107. package/dist/account/v1/generated/validators/updateAccountRequestBody.zod.d.ts +4 -0
  108. package/dist/account/v1/generated/validators/updateAccountRequestBody.zod.js +4 -0
  109. package/dist/fleet/v1/generated/functions.d.ts +31 -16
  110. package/dist/fleet/v1/generated/functions.js +27 -8
  111. package/dist/fleet/v1/generated/models.d.ts +58 -10
  112. package/dist/fleet/v1/generated/models.js +6 -1
  113. package/dist/fleet/v1/generated/schemas.zod.d.ts +36 -14
  114. package/dist/fleet/v1/generated/schemas.zod.js +31 -14
  115. package/dist/fleet/v1/generated/validators/accountList.zod.d.ts +20 -7
  116. package/dist/fleet/v1/generated/validators/accountList.zod.js +20 -7
  117. package/dist/fleet/v1/generated/validators/accountResource.zod.d.ts +20 -7
  118. package/dist/fleet/v1/generated/validators/accountResource.zod.js +20 -7
  119. package/dist/fleet/v1/generated/validators/approveEnrollmentRequest.zod.d.ts +20 -7
  120. package/dist/fleet/v1/generated/validators/approveEnrollmentRequest.zod.js +20 -7
  121. package/dist/fleet/v1/generated/validators/callMcpToolRequest.zod.d.ts +20 -7
  122. package/dist/fleet/v1/generated/validators/callMcpToolRequest.zod.js +20 -7
  123. package/dist/fleet/v1/generated/validators/callMcpToolResponse.zod.d.ts +20 -7
  124. package/dist/fleet/v1/generated/validators/callMcpToolResponse.zod.js +20 -7
  125. package/dist/fleet/v1/generated/validators/createGroupMemberRequest.zod.d.ts +20 -7
  126. package/dist/fleet/v1/generated/validators/createGroupMemberRequest.zod.js +20 -7
  127. package/dist/fleet/v1/generated/validators/createGroupRequest.zod.d.ts +20 -7
  128. package/dist/fleet/v1/generated/validators/createGroupRequest.zod.js +20 -7
  129. package/dist/fleet/v1/generated/validators/createMachineRegistrationRequest.zod.d.ts +20 -7
  130. package/dist/fleet/v1/generated/validators/createMachineRegistrationRequest.zod.js +20 -7
  131. package/dist/fleet/v1/generated/validators/createMachineRegistrationResponse.zod.d.ts +20 -7
  132. package/dist/fleet/v1/generated/validators/createMachineRegistrationResponse.zod.js +20 -7
  133. package/dist/fleet/v1/generated/validators/createParticipantRequest.zod.d.ts +20 -7
  134. package/dist/fleet/v1/generated/validators/createParticipantRequest.zod.js +20 -7
  135. package/dist/fleet/v1/generated/validators/createParticipantResponse.zod.d.ts +20 -7
  136. package/dist/fleet/v1/generated/validators/createParticipantResponse.zod.js +20 -7
  137. package/dist/fleet/v1/generated/validators/createPeerConnectionCandidatesRequest.zod.d.ts +20 -7
  138. package/dist/fleet/v1/generated/validators/createPeerConnectionCandidatesRequest.zod.js +20 -7
  139. package/dist/fleet/v1/generated/validators/createPeerConnectionRequest.zod.d.ts +20 -7
  140. package/dist/fleet/v1/generated/validators/createPeerConnectionRequest.zod.js +20 -7
  141. package/dist/fleet/v1/generated/validators/createSessionRequest.zod.d.ts +20 -7
  142. package/dist/fleet/v1/generated/validators/createSessionRequest.zod.js +20 -7
  143. package/dist/fleet/v1/generated/validators/cursorPagination.zod.d.ts +20 -7
  144. package/dist/fleet/v1/generated/validators/cursorPagination.zod.js +20 -7
  145. package/dist/fleet/v1/generated/validators/deleteMcpServerParams.zod.d.ts +20 -7
  146. package/dist/fleet/v1/generated/validators/deleteMcpServerParams.zod.js +20 -7
  147. package/dist/fleet/v1/generated/validators/denyPrivilegeRequestRequest.zod.d.ts +245 -0
  148. package/dist/fleet/v1/generated/validators/denyPrivilegeRequestRequest.zod.js +247 -0
  149. package/dist/fleet/v1/generated/validators/desktopOptions.zod.d.ts +20 -7
  150. package/dist/fleet/v1/generated/validators/desktopOptions.zod.js +20 -7
  151. package/dist/fleet/v1/generated/validators/desktopState.zod.d.ts +20 -7
  152. package/dist/fleet/v1/generated/validators/desktopState.zod.js +20 -7
  153. package/dist/fleet/v1/generated/validators/directoryName.zod.d.ts +20 -7
  154. package/dist/fleet/v1/generated/validators/directoryName.zod.js +20 -7
  155. package/dist/fleet/v1/generated/validators/enrollmentResource.zod.d.ts +20 -7
  156. package/dist/fleet/v1/generated/validators/enrollmentResource.zod.js +20 -7
  157. package/dist/fleet/v1/generated/validators/enrollmentState.zod.d.ts +20 -7
  158. package/dist/fleet/v1/generated/validators/enrollmentState.zod.js +20 -7
  159. package/dist/fleet/v1/generated/validators/error.zod.d.ts +20 -7
  160. package/dist/fleet/v1/generated/validators/error.zod.js +20 -7
  161. package/dist/fleet/v1/generated/validators/errorStatus.zod.d.ts +20 -7
  162. package/dist/fleet/v1/generated/validators/errorStatus.zod.js +20 -7
  163. package/dist/fleet/v1/generated/validators/featureState.zod.d.ts +20 -7
  164. package/dist/fleet/v1/generated/validators/featureState.zod.js +20 -7
  165. package/dist/fleet/v1/generated/validators/fieldViolation.zod.d.ts +20 -7
  166. package/dist/fleet/v1/generated/validators/fieldViolation.zod.js +20 -7
  167. package/dist/fleet/v1/generated/validators/findEnrollmentByPairingCodeParams.zod.d.ts +20 -7
  168. package/dist/fleet/v1/generated/validators/findEnrollmentByPairingCodeParams.zod.js +20 -7
  169. package/dist/fleet/v1/generated/validators/findEnrollmentResponse.zod.d.ts +20 -7
  170. package/dist/fleet/v1/generated/validators/findEnrollmentResponse.zod.js +20 -7
  171. package/dist/fleet/v1/generated/validators/groupList.zod.d.ts +20 -7
  172. package/dist/fleet/v1/generated/validators/groupList.zod.js +20 -7
  173. package/dist/fleet/v1/generated/validators/groupResource.zod.d.ts +20 -7
  174. package/dist/fleet/v1/generated/validators/groupResource.zod.js +20 -7
  175. package/dist/fleet/v1/generated/validators/iceCandidate.zod.d.ts +20 -7
  176. package/dist/fleet/v1/generated/validators/iceCandidate.zod.js +20 -7
  177. package/dist/fleet/v1/generated/validators/iceServer.zod.d.ts +20 -7
  178. package/dist/fleet/v1/generated/validators/iceServer.zod.js +20 -7
  179. package/dist/fleet/v1/generated/validators/listAccountsParams.zod.d.ts +20 -7
  180. package/dist/fleet/v1/generated/validators/listAccountsParams.zod.js +20 -7
  181. package/dist/fleet/v1/generated/validators/listGroupMembersParams.zod.d.ts +20 -7
  182. package/dist/fleet/v1/generated/validators/listGroupMembersParams.zod.js +20 -7
  183. package/dist/fleet/v1/generated/validators/listGroupsParams.zod.d.ts +20 -7
  184. package/dist/fleet/v1/generated/validators/listGroupsParams.zod.js +20 -7
  185. package/dist/fleet/v1/generated/validators/listMachineEventsParams.zod.d.ts +20 -7
  186. package/dist/fleet/v1/generated/validators/listMachineEventsParams.zod.js +20 -7
  187. package/dist/fleet/v1/generated/validators/listMachineRegistrationsParams.zod.d.ts +20 -7
  188. package/dist/fleet/v1/generated/validators/listMachineRegistrationsParams.zod.js +20 -7
  189. package/dist/fleet/v1/generated/validators/listMachinesParams.zod.d.ts +20 -7
  190. package/dist/fleet/v1/generated/validators/listMachinesParams.zod.js +20 -7
  191. package/dist/fleet/v1/generated/validators/listMcpToolsParams.zod.d.ts +20 -7
  192. package/dist/fleet/v1/generated/validators/listMcpToolsParams.zod.js +20 -7
  193. package/dist/fleet/v1/generated/validators/listPrivilegeAutoApprovalsParams.zod.d.ts +20 -7
  194. package/dist/fleet/v1/generated/validators/listPrivilegeAutoApprovalsParams.zod.js +20 -7
  195. package/dist/fleet/v1/generated/validators/listPrivilegeRequestsParams.zod.d.ts +20 -7
  196. package/dist/fleet/v1/generated/validators/listPrivilegeRequestsParams.zod.js +20 -7
  197. package/dist/fleet/v1/generated/validators/listSessionsParams.zod.d.ts +20 -7
  198. package/dist/fleet/v1/generated/validators/listSessionsParams.zod.js +20 -7
  199. package/dist/fleet/v1/generated/validators/machineEventList.zod.d.ts +20 -7
  200. package/dist/fleet/v1/generated/validators/machineEventList.zod.js +20 -7
  201. package/dist/fleet/v1/generated/validators/machineEventResource.zod.d.ts +20 -7
  202. package/dist/fleet/v1/generated/validators/machineEventResource.zod.js +20 -7
  203. package/dist/fleet/v1/generated/validators/machineEventType.zod.d.ts +20 -7
  204. package/dist/fleet/v1/generated/validators/machineEventType.zod.js +20 -7
  205. package/dist/fleet/v1/generated/validators/machineFeature.zod.d.ts +20 -7
  206. package/dist/fleet/v1/generated/validators/machineFeature.zod.js +20 -7
  207. package/dist/fleet/v1/generated/validators/machineList.zod.d.ts +20 -7
  208. package/dist/fleet/v1/generated/validators/machineList.zod.js +20 -7
  209. package/dist/fleet/v1/generated/validators/machineRegistrationList.zod.d.ts +20 -7
  210. package/dist/fleet/v1/generated/validators/machineRegistrationList.zod.js +20 -7
  211. package/dist/fleet/v1/generated/validators/machineRegistrationResource.zod.d.ts +20 -7
  212. package/dist/fleet/v1/generated/validators/machineRegistrationResource.zod.js +20 -7
  213. package/dist/fleet/v1/generated/validators/machineRegistrationState.zod.d.ts +20 -7
  214. package/dist/fleet/v1/generated/validators/machineRegistrationState.zod.js +20 -7
  215. package/dist/fleet/v1/generated/validators/machineResource.zod.d.ts +20 -7
  216. package/dist/fleet/v1/generated/validators/machineResource.zod.js +20 -7
  217. package/dist/fleet/v1/generated/validators/mcpConfigurationFile.zod.d.ts +20 -7
  218. package/dist/fleet/v1/generated/validators/mcpConfigurationFile.zod.js +20 -7
  219. package/dist/fleet/v1/generated/validators/mcpConfigurationResource.zod.d.ts +20 -7
  220. package/dist/fleet/v1/generated/validators/mcpConfigurationResource.zod.js +20 -7
  221. package/dist/fleet/v1/generated/validators/mcpImplementation.zod.d.ts +20 -7
  222. package/dist/fleet/v1/generated/validators/mcpImplementation.zod.js +20 -7
  223. package/dist/fleet/v1/generated/validators/mcpServerFailure.zod.d.ts +20 -7
  224. package/dist/fleet/v1/generated/validators/mcpServerFailure.zod.js +20 -7
  225. package/dist/fleet/v1/generated/validators/mcpServerResource.zod.d.ts +20 -7
  226. package/dist/fleet/v1/generated/validators/mcpServerResource.zod.js +20 -7
  227. package/dist/fleet/v1/generated/validators/mcpToolList.zod.d.ts +20 -7
  228. package/dist/fleet/v1/generated/validators/mcpToolList.zod.js +20 -7
  229. package/dist/fleet/v1/generated/validators/mcpToolResource.zod.d.ts +20 -7
  230. package/dist/fleet/v1/generated/validators/mcpToolResource.zod.js +20 -7
  231. package/dist/fleet/v1/generated/validators/mcpTransport.zod.d.ts +20 -7
  232. package/dist/fleet/v1/generated/validators/mcpTransport.zod.js +20 -7
  233. package/dist/fleet/v1/generated/validators/mcpUnavailableServer.zod.d.ts +20 -7
  234. package/dist/fleet/v1/generated/validators/mcpUnavailableServer.zod.js +20 -7
  235. package/dist/fleet/v1/generated/validators/migrationStep.zod.d.ts +20 -7
  236. package/dist/fleet/v1/generated/validators/migrationStep.zod.js +20 -7
  237. package/dist/fleet/v1/generated/validators/namedIdentity.zod.d.ts +20 -7
  238. package/dist/fleet/v1/generated/validators/namedIdentity.zod.js +20 -7
  239. package/dist/fleet/v1/generated/validators/offsetPagination.zod.d.ts +20 -7
  240. package/dist/fleet/v1/generated/validators/offsetPagination.zod.js +20 -7
  241. package/dist/fleet/v1/generated/validators/operatingSystem.zod.d.ts +20 -7
  242. package/dist/fleet/v1/generated/validators/operatingSystem.zod.js +20 -7
  243. package/dist/fleet/v1/generated/validators/participantList.zod.d.ts +20 -7
  244. package/dist/fleet/v1/generated/validators/participantList.zod.js +20 -7
  245. package/dist/fleet/v1/generated/validators/participantResource.zod.d.ts +20 -7
  246. package/dist/fleet/v1/generated/validators/participantResource.zod.js +20 -7
  247. package/dist/fleet/v1/generated/validators/peerConnection.zod.d.ts +20 -7
  248. package/dist/fleet/v1/generated/validators/peerConnection.zod.js +20 -7
  249. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalList.zod.d.ts +24 -7
  250. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalList.zod.js +20 -7
  251. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalMode.zod.d.ts +245 -0
  252. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalMode.zod.js +242 -0
  253. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalResource.zod.d.ts +24 -7
  254. package/dist/fleet/v1/generated/validators/privilegeAutoApprovalResource.zod.js +22 -7
  255. package/dist/fleet/v1/generated/validators/privilegeDecider.zod.d.ts +22 -8
  256. package/dist/fleet/v1/generated/validators/privilegeDecider.zod.js +22 -9
  257. package/dist/fleet/v1/generated/validators/privilegeRequestList.zod.d.ts +23 -8
  258. package/dist/fleet/v1/generated/validators/privilegeRequestList.zod.js +20 -7
  259. package/dist/fleet/v1/generated/validators/privilegeRequestResource.zod.d.ts +24 -8
  260. package/dist/fleet/v1/generated/validators/privilegeRequestResource.zod.js +26 -7
  261. package/dist/fleet/v1/generated/validators/privilegeRequestState.zod.d.ts +20 -7
  262. package/dist/fleet/v1/generated/validators/privilegeRequestState.zod.js +20 -7
  263. package/dist/fleet/v1/generated/validators/publicKey.zod.d.ts +20 -7
  264. package/dist/fleet/v1/generated/validators/publicKey.zod.js +20 -7
  265. package/dist/fleet/v1/generated/validators/renewParticipantRequest.zod.d.ts +20 -7
  266. package/dist/fleet/v1/generated/validators/renewParticipantRequest.zod.js +20 -7
  267. package/dist/fleet/v1/generated/validators/renewParticipantResponse.zod.d.ts +20 -7
  268. package/dist/fleet/v1/generated/validators/renewParticipantResponse.zod.js +20 -7
  269. package/dist/fleet/v1/generated/validators/replaceMcpConfigurationRequest.zod.d.ts +20 -7
  270. package/dist/fleet/v1/generated/validators/replaceMcpConfigurationRequest.zod.js +20 -7
  271. package/dist/fleet/v1/generated/validators/rtcConfiguration.zod.d.ts +20 -7
  272. package/dist/fleet/v1/generated/validators/rtcConfiguration.zod.js +20 -7
  273. package/dist/fleet/v1/generated/validators/runCommandRequest.zod.d.ts +20 -7
  274. package/dist/fleet/v1/generated/validators/runCommandRequest.zod.js +20 -7
  275. package/dist/fleet/v1/generated/validators/runCommandResponse.zod.d.ts +20 -7
  276. package/dist/fleet/v1/generated/validators/runCommandResponse.zod.js +20 -7
  277. package/dist/fleet/v1/generated/validators/sendMcpRequestRequest.zod.d.ts +20 -7
  278. package/dist/fleet/v1/generated/validators/sendMcpRequestRequest.zod.js +20 -7
  279. package/dist/fleet/v1/generated/validators/sendMcpRequestResponse.zod.d.ts +20 -7
  280. package/dist/fleet/v1/generated/validators/sendMcpRequestResponse.zod.js +20 -7
  281. package/dist/fleet/v1/generated/validators/sessionCloseReason.zod.d.ts +20 -7
  282. package/dist/fleet/v1/generated/validators/sessionCloseReason.zod.js +20 -7
  283. package/dist/fleet/v1/generated/validators/sessionList.zod.d.ts +20 -7
  284. package/dist/fleet/v1/generated/validators/sessionList.zod.js +20 -7
  285. package/dist/fleet/v1/generated/validators/sessionMode.zod.d.ts +20 -7
  286. package/dist/fleet/v1/generated/validators/sessionMode.zod.js +20 -7
  287. package/dist/fleet/v1/generated/validators/sessionResource.zod.d.ts +20 -7
  288. package/dist/fleet/v1/generated/validators/sessionResource.zod.js +20 -7
  289. package/dist/fleet/v1/generated/validators/sessionState.zod.d.ts +20 -7
  290. package/dist/fleet/v1/generated/validators/sessionState.zod.js +20 -7
  291. package/dist/fleet/v1/generated/validators/signedMessage.zod.d.ts +20 -7
  292. package/dist/fleet/v1/generated/validators/signedMessage.zod.js +20 -7
  293. package/dist/fleet/v1/generated/validators/signingKey.zod.d.ts +20 -7
  294. package/dist/fleet/v1/generated/validators/signingKey.zod.js +20 -7
  295. package/dist/fleet/v1/generated/validators/updateAccountRequest.zod.d.ts +20 -7
  296. package/dist/fleet/v1/generated/validators/updateAccountRequest.zod.js +20 -7
  297. package/dist/fleet/v1/generated/validators/updateGroupRequest.zod.d.ts +20 -7
  298. package/dist/fleet/v1/generated/validators/updateGroupRequest.zod.js +20 -7
  299. package/dist/fleet/v1/generated/validators/updateMachineRequest.zod.d.ts +20 -7
  300. package/dist/fleet/v1/generated/validators/updateMachineRequest.zod.js +20 -7
  301. package/dist/fleet/v1/generated/validators/updateMcpServerRequest.zod.d.ts +20 -7
  302. package/dist/fleet/v1/generated/validators/updateMcpServerRequest.zod.js +20 -7
  303. package/dist/fleet/v1/generated/validators/updateMcpServerResponse.zod.d.ts +20 -7
  304. package/dist/fleet/v1/generated/validators/updateMcpServerResponse.zod.js +20 -7
  305. package/dist/fleet/v1/generated/validators/updatePrivilegeAutoApprovalRequest.zod.d.ts +24 -7
  306. package/dist/fleet/v1/generated/validators/updatePrivilegeAutoApprovalRequest.zod.js +22 -7
  307. package/dist/iam/v1/generated/functions.d.ts +8 -6
  308. package/dist/iam/v1/generated/functions.js +7 -5
  309. package/dist/iam/v1/generated/models.d.ts +1 -13
  310. package/dist/iam/v1/generated/models.js +0 -4
  311. package/dist/iam/v1/generated/schemas.zod.d.ts +8 -10
  312. package/dist/iam/v1/generated/schemas.zod.js +8 -6
  313. package/dist/iam/v1/generated/validators/applicationResource.zod.d.ts +1 -1
  314. package/dist/iam/v1/generated/validators/applicationResource.zod.js +1 -1
  315. package/dist/iam/v1/generated/validators/attachPolicyRequestBody.zod.d.ts +1 -1
  316. package/dist/iam/v1/generated/validators/attachPolicyRequestBody.zod.js +1 -1
  317. package/dist/iam/v1/generated/validators/batchGetMembersRequestBody.zod.d.ts +1 -1
  318. package/dist/iam/v1/generated/validators/batchGetMembersRequestBody.zod.js +1 -1
  319. package/dist/iam/v1/generated/validators/batchGetMembersResponseBody.zod.d.ts +1 -1
  320. package/dist/iam/v1/generated/validators/batchGetMembersResponseBody.zod.js +1 -1
  321. package/dist/iam/v1/generated/validators/catalogListResponseBody.zod.d.ts +1 -1
  322. package/dist/iam/v1/generated/validators/catalogListResponseBody.zod.js +1 -1
  323. package/dist/iam/v1/generated/validators/catalogResource.zod.d.ts +1 -1
  324. package/dist/iam/v1/generated/validators/catalogResource.zod.js +1 -1
  325. package/dist/iam/v1/generated/validators/createApplicationRequestBody.zod.d.ts +1 -1
  326. package/dist/iam/v1/generated/validators/createApplicationRequestBody.zod.js +1 -1
  327. package/dist/iam/v1/generated/validators/createApplicationResponseBody.zod.d.ts +1 -1
  328. package/dist/iam/v1/generated/validators/createApplicationResponseBody.zod.js +1 -1
  329. package/dist/iam/v1/generated/validators/createRoleRequestBody.zod.d.ts +1 -1
  330. package/dist/iam/v1/generated/validators/createRoleRequestBody.zod.js +1 -1
  331. package/dist/iam/v1/generated/validators/createSSHKeyRequestBody.zod.d.ts +1 -6
  332. package/dist/iam/v1/generated/validators/createSSHKeyRequestBody.zod.js +1 -6
  333. package/dist/iam/v1/generated/validators/cursorPagination.zod.d.ts +1 -1
  334. package/dist/iam/v1/generated/validators/cursorPagination.zod.js +1 -1
  335. package/dist/iam/v1/generated/validators/error.zod.d.ts +1 -1
  336. package/dist/iam/v1/generated/validators/error.zod.js +1 -1
  337. package/dist/iam/v1/generated/validators/errorStatus.zod.d.ts +1 -1
  338. package/dist/iam/v1/generated/validators/errorStatus.zod.js +1 -1
  339. package/dist/iam/v1/generated/validators/fieldViolation.zod.d.ts +1 -1
  340. package/dist/iam/v1/generated/validators/fieldViolation.zod.js +1 -1
  341. package/dist/iam/v1/generated/validators/grantResource.zod.d.ts +1 -1
  342. package/dist/iam/v1/generated/validators/grantResource.zod.js +1 -1
  343. package/dist/iam/v1/generated/validators/invitationResource.zod.d.ts +1 -1
  344. package/dist/iam/v1/generated/validators/invitationResource.zod.js +1 -1
  345. package/dist/iam/v1/generated/validators/issueInvitationRequestBody.zod.d.ts +1 -1
  346. package/dist/iam/v1/generated/validators/issueInvitationRequestBody.zod.js +1 -1
  347. package/dist/iam/v1/generated/validators/issuedInvitationResponseBody.zod.d.ts +1 -1
  348. package/dist/iam/v1/generated/validators/issuedInvitationResponseBody.zod.js +1 -1
  349. package/dist/iam/v1/generated/validators/lengthAwarePageApplicationResource.zod.d.ts +1 -1
  350. package/dist/iam/v1/generated/validators/lengthAwarePageApplicationResource.zod.js +1 -1
  351. package/dist/iam/v1/generated/validators/lengthAwarePageInvitationResource.zod.d.ts +1 -1
  352. package/dist/iam/v1/generated/validators/lengthAwarePageInvitationResource.zod.js +1 -1
  353. package/dist/iam/v1/generated/validators/lengthAwarePageMemberResource.zod.d.ts +1 -1
  354. package/dist/iam/v1/generated/validators/lengthAwarePageMemberResource.zod.js +1 -1
  355. package/dist/iam/v1/generated/validators/lengthAwarePageSSHKeyResource.zod.d.ts +1 -2
  356. package/dist/iam/v1/generated/validators/lengthAwarePageSSHKeyResource.zod.js +1 -1
  357. package/dist/iam/v1/generated/validators/listApplicationsParams.zod.d.ts +1 -1
  358. package/dist/iam/v1/generated/validators/listApplicationsParams.zod.js +1 -1
  359. package/dist/iam/v1/generated/validators/listMembersParams.zod.d.ts +1 -1
  360. package/dist/iam/v1/generated/validators/listMembersParams.zod.js +1 -1
  361. package/dist/iam/v1/generated/validators/listPoliciesParams.zod.d.ts +1 -1
  362. package/dist/iam/v1/generated/validators/listPoliciesParams.zod.js +1 -1
  363. package/dist/iam/v1/generated/validators/listProjectInvitationsParams.zod.d.ts +1 -1
  364. package/dist/iam/v1/generated/validators/listProjectInvitationsParams.zod.js +1 -1
  365. package/dist/iam/v1/generated/validators/listSshKeysParams.zod.d.ts +1 -1
  366. package/dist/iam/v1/generated/validators/listSshKeysParams.zod.js +1 -1
  367. package/dist/iam/v1/generated/validators/memberResource.zod.d.ts +1 -1
  368. package/dist/iam/v1/generated/validators/memberResource.zod.js +1 -1
  369. package/dist/iam/v1/generated/validators/membershipResource.zod.d.ts +1 -1
  370. package/dist/iam/v1/generated/validators/membershipResource.zod.js +1 -1
  371. package/dist/iam/v1/generated/validators/offsetPagination.zod.d.ts +1 -1
  372. package/dist/iam/v1/generated/validators/offsetPagination.zod.js +1 -1
  373. package/dist/iam/v1/generated/validators/ownershipTransferResponseBody.zod.d.ts +1 -1
  374. package/dist/iam/v1/generated/validators/ownershipTransferResponseBody.zod.js +1 -1
  375. package/dist/iam/v1/generated/validators/permissionResource.zod.d.ts +1 -1
  376. package/dist/iam/v1/generated/validators/permissionResource.zod.js +1 -1
  377. package/dist/iam/v1/generated/validators/policyListResponseBody.zod.d.ts +1 -1
  378. package/dist/iam/v1/generated/validators/policyListResponseBody.zod.js +1 -1
  379. package/dist/iam/v1/generated/validators/policyResource.zod.d.ts +1 -1
  380. package/dist/iam/v1/generated/validators/policyResource.zod.js +1 -1
  381. package/dist/iam/v1/generated/validators/projectAccessResource.zod.d.ts +1 -1
  382. package/dist/iam/v1/generated/validators/projectAccessResource.zod.js +1 -1
  383. package/dist/iam/v1/generated/validators/projectResource.zod.d.ts +1 -1
  384. package/dist/iam/v1/generated/validators/projectResource.zod.js +1 -1
  385. package/dist/iam/v1/generated/validators/projectTraitResource.zod.d.ts +1 -1
  386. package/dist/iam/v1/generated/validators/projectTraitResource.zod.js +1 -1
  387. package/dist/iam/v1/generated/validators/quotaListResponseBody.zod.d.ts +1 -1
  388. package/dist/iam/v1/generated/validators/quotaListResponseBody.zod.js +1 -1
  389. package/dist/iam/v1/generated/validators/quotaResource.zod.d.ts +1 -1
  390. package/dist/iam/v1/generated/validators/quotaResource.zod.js +1 -1
  391. package/dist/iam/v1/generated/validators/renameSSHKeyRequestBody.zod.d.ts +1 -1
  392. package/dist/iam/v1/generated/validators/renameSSHKeyRequestBody.zod.js +1 -1
  393. package/dist/iam/v1/generated/validators/resolvedMemberResource.zod.d.ts +1 -1
  394. package/dist/iam/v1/generated/validators/resolvedMemberResource.zod.js +1 -1
  395. package/dist/iam/v1/generated/validators/resourceRefResource.zod.d.ts +1 -1
  396. package/dist/iam/v1/generated/validators/resourceRefResource.zod.js +1 -1
  397. package/dist/iam/v1/generated/validators/resourceTypeResource.zod.d.ts +1 -1
  398. package/dist/iam/v1/generated/validators/resourceTypeResource.zod.js +1 -1
  399. package/dist/iam/v1/generated/validators/roleListResponseBody.zod.d.ts +1 -1
  400. package/dist/iam/v1/generated/validators/roleListResponseBody.zod.js +1 -1
  401. package/dist/iam/v1/generated/validators/roleResource.zod.d.ts +1 -1
  402. package/dist/iam/v1/generated/validators/roleResource.zod.js +1 -1
  403. package/dist/iam/v1/generated/validators/rotateApplicationSecretResponseBody.zod.d.ts +1 -1
  404. package/dist/iam/v1/generated/validators/rotateApplicationSecretResponseBody.zod.js +1 -1
  405. package/dist/iam/v1/generated/validators/ruleResource.zod.d.ts +1 -1
  406. package/dist/iam/v1/generated/validators/ruleResource.zod.js +1 -1
  407. package/dist/iam/v1/generated/validators/sSHKeyResource.zod.d.ts +1 -2
  408. package/dist/iam/v1/generated/validators/sSHKeyResource.zod.js +1 -5
  409. package/dist/iam/v1/generated/validators/setMemberPermissionsRequestBody.zod.d.ts +1 -1
  410. package/dist/iam/v1/generated/validators/setMemberPermissionsRequestBody.zod.js +1 -1
  411. package/dist/iam/v1/generated/validators/setMemberRolesRequestBody.zod.d.ts +1 -1
  412. package/dist/iam/v1/generated/validators/setMemberRolesRequestBody.zod.js +1 -1
  413. package/dist/iam/v1/generated/validators/setProjectSlugRequestBody.zod.d.ts +1 -1
  414. package/dist/iam/v1/generated/validators/setProjectSlugRequestBody.zod.js +1 -1
  415. package/dist/iam/v1/generated/validators/transferOwnershipRequestBody.zod.d.ts +1 -1
  416. package/dist/iam/v1/generated/validators/transferOwnershipRequestBody.zod.js +1 -1
  417. package/dist/iam/v1/generated/validators/updateApplicationRequestBody.zod.d.ts +1 -1
  418. package/dist/iam/v1/generated/validators/updateApplicationRequestBody.zod.js +1 -1
  419. package/dist/iam/v1/generated/validators/updatePolicyRequestBody.zod.d.ts +1 -1
  420. package/dist/iam/v1/generated/validators/updatePolicyRequestBody.zod.js +1 -1
  421. package/dist/iam/v1/generated/validators/updateProjectRequestBody.zod.d.ts +1 -1
  422. package/dist/iam/v1/generated/validators/updateProjectRequestBody.zod.js +1 -1
  423. package/dist/iam/v1/generated/validators/updateRoleRequestBody.zod.d.ts +1 -1
  424. package/dist/iam/v1/generated/validators/updateRoleRequestBody.zod.js +1 -1
  425. package/dist/proto/leaflow/fleet/privilege/v1/privilege_pb.d.ts +20 -5
  426. package/dist/proto/leaflow/fleet/privilege/v1/privilege_pb.js +1 -1
  427. package/dist/routes.d.ts +40 -0
  428. package/dist/routes.js +45 -0
  429. package/package.json +1 -1
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -225,6 +238,7 @@
225
238
  */
226
239
  import * as zod from "zod";
227
240
  export declare const privilegeRequestResourceSessionIdMax = 40;
241
+ export declare const privilegeRequestResourceReasonMax = 200;
228
242
  export declare const PrivilegeRequestResource: zod.ZodObject<{
229
243
  id: zod.ZodUUID;
230
244
  machine_id: zod.ZodUUID;
@@ -243,8 +257,10 @@ export declare const PrivilegeRequestResource: zod.ZodObject<{
243
257
  }>;
244
258
  decided_by: zod.ZodUnion<readonly [zod.ZodEnum<{
245
259
  user: "user";
246
- auto_approval: "auto_approval";
260
+ automatic_review: "automatic_review";
261
+ always_approve: "always_approve";
247
262
  }>, zod.ZodNull]>;
263
+ reason: zod.ZodNullable<zod.ZodString>;
248
264
  created_at: zod.z.ZodISODateTime;
249
265
  expires_at: zod.z.ZodISODateTime;
250
266
  decided_at: zod.ZodNullable<zod.z.ZodISODateTime>;
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -227,6 +240,7 @@ import * as zod from "zod";
227
240
  import { PrivilegeDecider } from "./privilegeDecider.zod.js";
228
241
  import { PrivilegeRequestState } from "./privilegeRequestState.zod.js";
229
242
  export const privilegeRequestResourceSessionIdMax = 40;
243
+ export const privilegeRequestResourceReasonMax = 200;
230
244
  export const PrivilegeRequestResource = zod.strictObject({
231
245
  id: zod.uuid(),
232
246
  machine_id: zod.uuid(),
@@ -246,6 +260,11 @@ export const PrivilegeRequestResource = zod.strictObject({
246
260
  decided_by: zod
247
261
  .union([PrivilegeDecider, zod.null()])
248
262
  .describe("Who decided an `approved` or `denied` request; null in any other state"),
263
+ reason: zod
264
+ .string()
265
+ .max(privilegeRequestResourceReasonMax)
266
+ .nullable()
267
+ .describe("Why the request was decided so: as the user gave it when denying, or as the automatic\nreview gave it, including why a review could not be made; null when none was given"),
249
268
  created_at: zod.iso.datetime({ offset: true }),
250
269
  expires_at: zod.iso.datetime({ offset: true }),
251
270
  decided_at: zod.iso
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop
@@ -105,8 +105,9 @@
105
105
  * keep a member out of some machines, deny them `fleet:machines.login` on those machines.
106
106
  * Elevation through sudo is never approved by a password; see "Approving sudo".
107
107
  *
108
- * Members log in over SSH with the keys they own among the project's SSH keys, while they may
109
- * log in to the machine.
108
+ * Members log in over SSH with the SSH keys of their own accounts (`/account/v1/me/ssh-keys` on
109
+ * the account API), while they may log in to the machine. The SSH keys a project shares sign in
110
+ * to no directory account.
110
111
  *
111
112
  * Machines resolve directory accounts and groups themselves and never write them into their local
112
113
  * account files. A local account or group that already uses a name or id of the directory keeps
@@ -139,16 +140,28 @@
139
140
  * applies:
140
141
  *
141
142
  * - inside a command run through this API, by the request itself;
142
- * - at once, while the user has approved their requests on the machine without asking, for a
143
- * while or until removed (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`);
143
+ * - by the user's automatic approval for the machine, for a while or until removed
144
+ * (`PUT /api/v1/machines/{machineId}/privilege-auto-approval`), in one of two modes:
145
+ * - `automatic_review`, the recommended one: a large language model reviews each request and
146
+ * approves or denies it with a reason. It stops most dangerous requests, but not all of
147
+ * them. Each review is a request to Canopy, the model platform, through the project's
148
+ * Canopy service, and may incur Canopy charges; the project needs Canopy enabled. A
149
+ * request that cannot be reviewed, such as when the project has not enabled Canopy or the
150
+ * review does not complete in time, is denied with a reason saying so;
151
+ * - `always_approve`: every request is approved at once. This is dangerous: any program that
152
+ * runs as the account, such as a script or an AI agent, becomes root without anyone being
153
+ * asked;
144
154
  * - by the user, on any of their devices, for a request listed by `GET /api/v1/privilege-requests`
145
155
  * (`POST …:approve` or `…:deny`), or on a participant of the session the asking process belongs
146
156
  * to. A request nobody decides expires, and sudo fails.
147
157
  *
158
+ * A denied sudo shows whoever ran it the reason, when the denial gave one.
159
+ *
148
160
  * Requests reach the user's devices as they happen through EventBus: the event
149
- * `leaflow.fleet.privilege.requested` when one is waiting and `leaflow.fleet.privilege.decided`
150
- * when it ends, each addressed to the user in the current project and carrying the request's
151
- * `id`. A client that subscribes to them needs no polling; one that does not can list the
161
+ * `leaflow.fleet.privilege.requested` when one waits for the user and
162
+ * `leaflow.fleet.privilege.decided` when it ends, each addressed to the user in the current
163
+ * project and carrying the request's `id`. Requests decided without asking the user raise
164
+ * neither. A client that subscribes to them needs no polling; one that does not can list the
152
165
  * pending requests.
153
166
  *
154
167
  * ## Connections that drop