declarative-sdk-for-k 2.21.0__tar.gz

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 (627) hide show
  1. declarative_sdk_for_k-2.21.0/LICENSE +21 -0
  2. declarative_sdk_for_k-2.21.0/NOTICE +54 -0
  3. declarative_sdk_for_k-2.21.0/PKG-INFO +526 -0
  4. declarative_sdk_for_k-2.21.0/README.md +452 -0
  5. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/PKG-INFO +526 -0
  6. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/SOURCES.txt +626 -0
  7. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/dependency_links.txt +1 -0
  8. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/entry_points.txt +6 -0
  9. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/requires.txt +54 -0
  10. declarative_sdk_for_k-2.21.0/declarative_sdk_for_k.egg-info/top_level.txt +3 -0
  11. declarative_sdk_for_k-2.21.0/dsk/__init__.py +37 -0
  12. declarative_sdk_for_k-2.21.0/dsk/_obs/__init__.py +136 -0
  13. declarative_sdk_for_k-2.21.0/dsk/auth/__init__.py +46 -0
  14. declarative_sdk_for_k-2.21.0/dsk/auth/helper.py +449 -0
  15. declarative_sdk_for_k-2.21.0/dsk/cli/__init__.py +9 -0
  16. declarative_sdk_for_k-2.21.0/dsk/cli/__main__.py +6 -0
  17. declarative_sdk_for_k-2.21.0/dsk/cli/_live/__init__.py +14 -0
  18. declarative_sdk_for_k-2.21.0/dsk/cli/_live/runbook.py +230 -0
  19. declarative_sdk_for_k-2.21.0/dsk/cli/_live/transcript.py +227 -0
  20. declarative_sdk_for_k-2.21.0/dsk/cli/_report/__init__.py +23 -0
  21. declarative_sdk_for_k-2.21.0/dsk/cli/_report/common.py +152 -0
  22. declarative_sdk_for_k-2.21.0/dsk/cli/_report/compliance.py +185 -0
  23. declarative_sdk_for_k-2.21.0/dsk/cli/_report/ksm_usage.py +259 -0
  24. declarative_sdk_for_k-2.21.0/dsk/cli/_report/password.py +52 -0
  25. declarative_sdk_for_k-2.21.0/dsk/cli/_report/role_report.py +179 -0
  26. declarative_sdk_for_k-2.21.0/dsk/cli/_report/runner.py +154 -0
  27. declarative_sdk_for_k-2.21.0/dsk/cli/_report/security_audit.py +62 -0
  28. declarative_sdk_for_k-2.21.0/dsk/cli/_report/team_report_cmd.py +140 -0
  29. declarative_sdk_for_k-2.21.0/dsk/cli/_report/team_roles.py +327 -0
  30. declarative_sdk_for_k-2.21.0/dsk/cli/_report/vault_health.py +714 -0
  31. declarative_sdk_for_k-2.21.0/dsk/cli/audit_chain.py +272 -0
  32. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_audit.py +121 -0
  33. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_bundle.py +227 -0
  34. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_discover.py +216 -0
  35. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_drift_watch.py +153 -0
  36. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_import_from_keepercmd.py +1164 -0
  37. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_rehearse_report.py +229 -0
  38. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_scan.py +150 -0
  39. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_shim_info.py +29 -0
  40. declarative_sdk_for_k-2.21.0/dsk/cli/cmd_verify.py +169 -0
  41. declarative_sdk_for_k-2.21.0/dsk/cli/discover.py +224 -0
  42. declarative_sdk_for_k-2.21.0/dsk/cli/main.py +4799 -0
  43. declarative_sdk_for_k-2.21.0/dsk/cli/renderer.py +105 -0
  44. declarative_sdk_for_k-2.21.0/dsk/core/__init__.py +414 -0
  45. declarative_sdk_for_k-2.21.0/dsk/core/_private_families.py +36 -0
  46. declarative_sdk_for_k-2.21.0/dsk/core/agent_kit_diff.py +45 -0
  47. declarative_sdk_for_k-2.21.0/dsk/core/agent_memory_policy_diff.py +47 -0
  48. declarative_sdk_for_k-2.21.0/dsk/core/agentic_skill_policy_diff.py +63 -0
  49. declarative_sdk_for_k-2.21.0/dsk/core/ai_act_diff.py +77 -0
  50. declarative_sdk_for_k-2.21.0/dsk/core/ai_agent_diff.py +48 -0
  51. declarative_sdk_for_k-2.21.0/dsk/core/ai_policy_diff.py +104 -0
  52. declarative_sdk_for_k-2.21.0/dsk/core/ai_token_diff.py +104 -0
  53. declarative_sdk_for_k-2.21.0/dsk/core/checkpoint.py +117 -0
  54. declarative_sdk_for_k-2.21.0/dsk/core/cloud_jit_diff.py +48 -0
  55. declarative_sdk_for_k-2.21.0/dsk/core/cmmc_diff.py +45 -0
  56. declarative_sdk_for_k-2.21.0/dsk/core/compliance_diff.py +60 -0
  57. declarative_sdk_for_k-2.21.0/dsk/core/connection_profile_diff.py +48 -0
  58. declarative_sdk_for_k-2.21.0/dsk/core/cspm_diff.py +47 -0
  59. declarative_sdk_for_k-2.21.0/dsk/core/db_access_diff.py +48 -0
  60. declarative_sdk_for_k-2.21.0/dsk/core/diff.py +1016 -0
  61. declarative_sdk_for_k-2.21.0/dsk/core/dora_diff.py +45 -0
  62. declarative_sdk_for_k-2.21.0/dsk/core/enterprise_diff.py +304 -0
  63. declarative_sdk_for_k-2.21.0/dsk/core/enterprise_graph.py +269 -0
  64. declarative_sdk_for_k-2.21.0/dsk/core/epm_diff.py +384 -0
  65. declarative_sdk_for_k-2.21.0/dsk/core/errors.py +66 -0
  66. declarative_sdk_for_k-2.21.0/dsk/core/evidence_stream_diff.py +60 -0
  67. declarative_sdk_for_k-2.21.0/dsk/core/field_names.py +52 -0
  68. declarative_sdk_for_k-2.21.0/dsk/core/gateway_ha_diff.py +48 -0
  69. declarative_sdk_for_k-2.21.0/dsk/core/governance.py +85 -0
  70. declarative_sdk_for_k-2.21.0/dsk/core/graph.py +183 -0
  71. declarative_sdk_for_k-2.21.0/dsk/core/integrations_events_diff.py +234 -0
  72. declarative_sdk_for_k-2.21.0/dsk/core/integrations_identity_diff.py +274 -0
  73. declarative_sdk_for_k-2.21.0/dsk/core/interfaces.py +130 -0
  74. declarative_sdk_for_k-2.21.0/dsk/core/ir_adapters.py +137 -0
  75. declarative_sdk_for_k-2.21.0/dsk/core/itsm_gate_diff.py +47 -0
  76. declarative_sdk_for_k-2.21.0/dsk/core/keeper_drive_diff.py +73 -0
  77. declarative_sdk_for_k-2.21.0/dsk/core/ksm_diff.py +262 -0
  78. declarative_sdk_for_k-2.21.0/dsk/core/ksm_graph.py +140 -0
  79. declarative_sdk_for_k-2.21.0/dsk/core/lock.py +426 -0
  80. declarative_sdk_for_k-2.21.0/dsk/core/manifest.py +919 -0
  81. declarative_sdk_for_k-2.21.0/dsk/core/mcp_allowlist_diff.py +47 -0
  82. declarative_sdk_for_k-2.21.0/dsk/core/mcp_diff.py +49 -0
  83. declarative_sdk_for_k-2.21.0/dsk/core/metadata.py +99 -0
  84. declarative_sdk_for_k-2.21.0/dsk/core/models.py +610 -0
  85. declarative_sdk_for_k-2.21.0/dsk/core/models_agent_kit.py +69 -0
  86. declarative_sdk_for_k-2.21.0/dsk/core/models_agent_memory_policy.py +121 -0
  87. declarative_sdk_for_k-2.21.0/dsk/core/models_agentic_skill_policy.py +138 -0
  88. declarative_sdk_for_k-2.21.0/dsk/core/models_ai_act.py +114 -0
  89. declarative_sdk_for_k-2.21.0/dsk/core/models_ai_agent.py +117 -0
  90. declarative_sdk_for_k-2.21.0/dsk/core/models_ai_policy.py +78 -0
  91. declarative_sdk_for_k-2.21.0/dsk/core/models_ai_token.py +114 -0
  92. declarative_sdk_for_k-2.21.0/dsk/core/models_cloud_jit.py +88 -0
  93. declarative_sdk_for_k-2.21.0/dsk/core/models_cmmc.py +92 -0
  94. declarative_sdk_for_k-2.21.0/dsk/core/models_compliance.py +74 -0
  95. declarative_sdk_for_k-2.21.0/dsk/core/models_connection_profile.py +106 -0
  96. declarative_sdk_for_k-2.21.0/dsk/core/models_cspm.py +79 -0
  97. declarative_sdk_for_k-2.21.0/dsk/core/models_db_access.py +97 -0
  98. declarative_sdk_for_k-2.21.0/dsk/core/models_dora.py +97 -0
  99. declarative_sdk_for_k-2.21.0/dsk/core/models_enterprise.py +246 -0
  100. declarative_sdk_for_k-2.21.0/dsk/core/models_epm.py +292 -0
  101. declarative_sdk_for_k-2.21.0/dsk/core/models_evidence_stream.py +96 -0
  102. declarative_sdk_for_k-2.21.0/dsk/core/models_gateway_ha.py +104 -0
  103. declarative_sdk_for_k-2.21.0/dsk/core/models_integrations_events.py +155 -0
  104. declarative_sdk_for_k-2.21.0/dsk/core/models_integrations_identity.py +168 -0
  105. declarative_sdk_for_k-2.21.0/dsk/core/models_itsm_gate.py +79 -0
  106. declarative_sdk_for_k-2.21.0/dsk/core/models_jit.py +101 -0
  107. declarative_sdk_for_k-2.21.0/dsk/core/models_k8s_eso.py +134 -0
  108. declarative_sdk_for_k-2.21.0/dsk/core/models_keeper_drive.py +154 -0
  109. declarative_sdk_for_k-2.21.0/dsk/core/models_ksm.py +221 -0
  110. declarative_sdk_for_k-2.21.0/dsk/core/models_mcp.py +91 -0
  111. declarative_sdk_for_k-2.21.0/dsk/core/models_mcp_allowlist.py +111 -0
  112. declarative_sdk_for_k-2.21.0/dsk/core/models_msp.py +48 -0
  113. declarative_sdk_for_k-2.21.0/dsk/core/models_nhi.py +231 -0
  114. declarative_sdk_for_k-2.21.0/dsk/core/models_pam_extended.py +192 -0
  115. declarative_sdk_for_k-2.21.0/dsk/core/models_pipeline_env.py +90 -0
  116. declarative_sdk_for_k-2.21.0/dsk/core/models_policy.py +630 -0
  117. declarative_sdk_for_k-2.21.0/dsk/core/models_pqc.py +70 -0
  118. declarative_sdk_for_k-2.21.0/dsk/core/models_privileged_access.py +159 -0
  119. declarative_sdk_for_k-2.21.0/dsk/core/models_rotation.py +122 -0
  120. declarative_sdk_for_k-2.21.0/dsk/core/models_saas_rotation.py +134 -0
  121. declarative_sdk_for_k-2.21.0/dsk/core/models_scim.py +111 -0
  122. declarative_sdk_for_k-2.21.0/dsk/core/models_secret_scanner.py +71 -0
  123. declarative_sdk_for_k-2.21.0/dsk/core/models_siem.py +170 -0
  124. declarative_sdk_for_k-2.21.0/dsk/core/models_slack_gate.py +60 -0
  125. declarative_sdk_for_k-2.21.0/dsk/core/models_spiffe.py +54 -0
  126. declarative_sdk_for_k-2.21.0/dsk/core/models_terraform.py +107 -0
  127. declarative_sdk_for_k-2.21.0/dsk/core/models_trust_chain.py +81 -0
  128. declarative_sdk_for_k-2.21.0/dsk/core/models_tunnel.py +138 -0
  129. declarative_sdk_for_k-2.21.0/dsk/core/models_vault_sharing.py +61 -0
  130. declarative_sdk_for_k-2.21.0/dsk/core/models_workflow.py +172 -0
  131. declarative_sdk_for_k-2.21.0/dsk/core/models_workflow_gate.py +109 -0
  132. declarative_sdk_for_k-2.21.0/dsk/core/msp_diff.py +316 -0
  133. declarative_sdk_for_k-2.21.0/dsk/core/msp_graph.py +63 -0
  134. declarative_sdk_for_k-2.21.0/dsk/core/msp_models.py +112 -0
  135. declarative_sdk_for_k-2.21.0/dsk/core/nhi_diff.py +46 -0
  136. declarative_sdk_for_k-2.21.0/dsk/core/normalize.py +372 -0
  137. declarative_sdk_for_k-2.21.0/dsk/core/pam_extended_diff.py +273 -0
  138. declarative_sdk_for_k-2.21.0/dsk/core/pipeline_env_diff.py +48 -0
  139. declarative_sdk_for_k-2.21.0/dsk/core/planner.py +90 -0
  140. declarative_sdk_for_k-2.21.0/dsk/core/pqc_diff.py +46 -0
  141. declarative_sdk_for_k-2.21.0/dsk/core/preview.py +140 -0
  142. declarative_sdk_for_k-2.21.0/dsk/core/privileged_access_diff.py +74 -0
  143. declarative_sdk_for_k-2.21.0/dsk/core/record_type_aliases.py +26 -0
  144. declarative_sdk_for_k-2.21.0/dsk/core/redact.py +195 -0
  145. declarative_sdk_for_k-2.21.0/dsk/core/refusal.py +310 -0
  146. declarative_sdk_for_k-2.21.0/dsk/core/resource_limits.py +238 -0
  147. declarative_sdk_for_k-2.21.0/dsk/core/rules.py +165 -0
  148. declarative_sdk_for_k-2.21.0/dsk/core/saas_rotation_diff.py +63 -0
  149. declarative_sdk_for_k-2.21.0/dsk/core/schema.py +552 -0
  150. declarative_sdk_for_k-2.21.0/dsk/core/schemas/__init__.py +1 -0
  151. declarative_sdk_for_k-2.21.0/dsk/core/schemas/_meta/x-keeper-live-proof.schema.json +28 -0
  152. declarative_sdk_for_k-2.21.0/dsk/core/schemas/agent-memory-policy/agent-memory-policy.v1.schema.json +127 -0
  153. declarative_sdk_for_k-2.21.0/dsk/core/schemas/agentic-skill-policy/agentic-skill-policy.v1.schema.json +197 -0
  154. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ai-act-profile/ai-act-profile.v1.schema.json +14 -0
  155. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ai-agent/ai-agent.v1.schema.json +272 -0
  156. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ai-agent-trust-chain/ai-agent-trust-chain.v1.schema.json +14 -0
  157. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ai-token/ai-token.v1.schema.json +84 -0
  158. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ai_agent_v1.json +185 -0
  159. declarative_sdk_for_k-2.21.0/dsk/core/schemas/cloud-jit/cloud-jit.v1.schema.json +14 -0
  160. declarative_sdk_for_k-2.21.0/dsk/core/schemas/cmmc-profile/cmmc-profile.v1.schema.json +14 -0
  161. declarative_sdk_for_k-2.21.0/dsk/core/schemas/compliance-bundle/compliance-bundle.v1.schema.json +16 -0
  162. declarative_sdk_for_k-2.21.0/dsk/core/schemas/continuous-evidence-stream/continuous-evidence-stream.v1.schema.json +14 -0
  163. declarative_sdk_for_k-2.21.0/dsk/core/schemas/cspm-remediation/cspm-remediation.v1.schema.json +14 -0
  164. declarative_sdk_for_k-2.21.0/dsk/core/schemas/db-access-policy/db-access-policy.v1.schema.json +13 -0
  165. declarative_sdk_for_k-2.21.0/dsk/core/schemas/dora-profile/dora-profile.v1.schema.json +14 -0
  166. declarative_sdk_for_k-2.21.0/dsk/core/schemas/enterprise/enterprise.v1.schema.json +216 -0
  167. declarative_sdk_for_k-2.21.0/dsk/core/schemas/epm/epm.v1.schema.json +168 -0
  168. declarative_sdk_for_k-2.21.0/dsk/core/schemas/epm-policy/epm-policy.v1.schema.json +40 -0
  169. declarative_sdk_for_k-2.21.0/dsk/core/schemas/gateway-ha/gateway-ha.v1.schema.json +12 -0
  170. declarative_sdk_for_k-2.21.0/dsk/core/schemas/integrations/events.v1.schema.json +53 -0
  171. declarative_sdk_for_k-2.21.0/dsk/core/schemas/integrations/identity.v1.schema.json +144 -0
  172. declarative_sdk_for_k-2.21.0/dsk/core/schemas/itsm-approval-gate/itsm-approval-gate.v1.schema.json +13 -0
  173. declarative_sdk_for_k-2.21.0/dsk/core/schemas/jit-access/jit-access.v1.schema.json +39 -0
  174. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-agent-kit/keeper-agent-kit.v1.schema.json +14 -0
  175. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-ai-policy/keeper-ai-policy.v1.schema.json +14 -0
  176. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-drive/keeper-drive.v1.schema.json +120 -0
  177. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-enterprise/keeper-enterprise.v1.schema.json +522 -0
  178. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-epm/keeper-epm.v1.schema.json +23 -0
  179. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-integrations-events/keeper-integrations-events.v1.schema.json +146 -0
  180. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-integrations-identity/keeper-integrations-identity.v1.schema.json +132 -0
  181. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-k8s-eso/keeper-k8s-eso.v1.schema.json +96 -0
  182. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-ksm/keeper-ksm.v1.schema.json +23 -0
  183. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-pam-extended/keeper-pam-extended.v1.schema.json +189 -0
  184. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-policy/keeper-policy.v1.schema.json +421 -0
  185. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-privileged-access/keeper-privileged-access.v1.schema.json +122 -0
  186. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-saas-rotation/keeper-saas-rotation.v1.schema.json +106 -0
  187. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-scim/keeper-scim.v1.schema.json +157 -0
  188. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-security-posture/keeper-security-posture.v1.schema.json +23 -0
  189. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-siem/keeper-siem.v1.schema.json +162 -0
  190. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-terraform/keeper-terraform.v1.schema.json +70 -0
  191. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-tunnel/keeper-tunnel.v1.schema.json +116 -0
  192. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-vault/keeper-vault.v1.schema.json +519 -0
  193. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-vault-sharing/keeper-vault-sharing.v1.schema.json +216 -0
  194. declarative_sdk_for_k-2.21.0/dsk/core/schemas/keeper-workflow/keeper-workflow.v1.schema.json +151 -0
  195. declarative_sdk_for_k-2.21.0/dsk/core/schemas/ksm/ksm.v1.schema.json +187 -0
  196. declarative_sdk_for_k-2.21.0/dsk/core/schemas/mcp-secrets-binding/mcp-secrets-binding.v1.schema.json +30 -0
  197. declarative_sdk_for_k-2.21.0/dsk/core/schemas/mcp-server-allowlist/mcp-server-allowlist.v1.schema.json +144 -0
  198. declarative_sdk_for_k-2.21.0/dsk/core/schemas/msp-environment/msp-environment.v1.schema.json +81 -0
  199. declarative_sdk_for_k-2.21.0/dsk/core/schemas/nhi-agent/nhi-agent.v1.schema.json +214 -0
  200. declarative_sdk_for_k-2.21.0/dsk/core/schemas/nhi_agent_v1.json +126 -0
  201. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pam-connection-profile/pam-connection-profile.v1.schema.json +14 -0
  202. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pam-environment/pam-environment.v1.schema.json +585 -0
  203. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pam-environment.v1.schema.json +585 -0
  204. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pam-extended/keeper-pam-extended.v1.schema.json +238 -0
  205. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pam_extended/pam_extended.v1.schema.json +199 -0
  206. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pipeline-ephemeral-environment/pipeline-ephemeral-environment.v1.schema.json +14 -0
  207. declarative_sdk_for_k-2.21.0/dsk/core/schemas/pqc-policy/pqc-policy.v1.schema.json +14 -0
  208. declarative_sdk_for_k-2.21.0/dsk/core/schemas/privileged-access/privileged-access.v1.schema.json +122 -0
  209. declarative_sdk_for_k-2.21.0/dsk/core/schemas/rotation-policy/rotation-policy.v1.schema.json +188 -0
  210. declarative_sdk_for_k-2.21.0/dsk/core/schemas/saas-rotation/saas-rotation.v1.schema.json +96 -0
  211. declarative_sdk_for_k-2.21.0/dsk/core/schemas/secret-scanner-bridge/secret-scanner-bridge.v1.schema.json +14 -0
  212. declarative_sdk_for_k-2.21.0/dsk/core/schemas/slack-approval-gate/slack-approval-gate.v1.schema.json +13 -0
  213. declarative_sdk_for_k-2.21.0/dsk/core/schemas/spiffe-binding/spiffe-binding.v1.schema.json +43 -0
  214. declarative_sdk_for_k-2.21.0/dsk/core/schemas/tunnel/tunnel.v1.schema.json +116 -0
  215. declarative_sdk_for_k-2.21.0/dsk/core/schemas/vault_sharing/vault_sharing.v1.schema.json +216 -0
  216. declarative_sdk_for_k-2.21.0/dsk/core/schemas/workflow/workflow.v1.schema.json +151 -0
  217. declarative_sdk_for_k-2.21.0/dsk/core/schemas/workflow-gate/workflow-gate.v1.schema.json +14 -0
  218. declarative_sdk_for_k-2.21.0/dsk/core/scim_diff.py +101 -0
  219. declarative_sdk_for_k-2.21.0/dsk/core/secret_scanner_diff.py +61 -0
  220. declarative_sdk_for_k-2.21.0/dsk/core/sharing_diff.py +1313 -0
  221. declarative_sdk_for_k-2.21.0/dsk/core/sharing_graph.py +101 -0
  222. declarative_sdk_for_k-2.21.0/dsk/core/sharing_models.py +231 -0
  223. declarative_sdk_for_k-2.21.0/dsk/core/siem_diff.py +226 -0
  224. declarative_sdk_for_k-2.21.0/dsk/core/slack_gate_diff.py +47 -0
  225. declarative_sdk_for_k-2.21.0/dsk/core/spiffe_diff.py +47 -0
  226. declarative_sdk_for_k-2.21.0/dsk/core/spiffe_runtime.py +349 -0
  227. declarative_sdk_for_k-2.21.0/dsk/core/trust_chain_diff.py +47 -0
  228. declarative_sdk_for_k-2.21.0/dsk/core/tunnel_diff.py +84 -0
  229. declarative_sdk_for_k-2.21.0/dsk/core/vault_diff.py +876 -0
  230. declarative_sdk_for_k-2.21.0/dsk/core/vault_graph.py +87 -0
  231. declarative_sdk_for_k-2.21.0/dsk/core/vault_models.py +478 -0
  232. declarative_sdk_for_k-2.21.0/dsk/core/vault_sharing_plan.py +105 -0
  233. declarative_sdk_for_k-2.21.0/dsk/core/workflow_diff.py +77 -0
  234. declarative_sdk_for_k-2.21.0/dsk/core/workflow_gate_diff.py +47 -0
  235. declarative_sdk_for_k-2.21.0/dsk/crossplane/__init__.py +10 -0
  236. declarative_sdk_for_k-2.21.0/dsk/crossplane/provider.py +123 -0
  237. declarative_sdk_for_k-2.21.0/dsk/daemon/__init__.py +0 -0
  238. declarative_sdk_for_k-2.21.0/dsk/daemon/drift_watch.py +368 -0
  239. declarative_sdk_for_k-2.21.0/dsk/extras/__init__.py +5 -0
  240. declarative_sdk_for_k-2.21.0/dsk/extras/dx_tools.py +556 -0
  241. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/__init__.py +1 -0
  242. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/agentic-llm-tenant.yaml +11 -0
  243. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/ai_agent_dsk_orchestrator.yaml +27 -0
  244. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/enterprise_role_management.yaml +29 -0
  245. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/enterprise_team_membership.yaml +31 -0
  246. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/enterprise_user_roster.yaml +34 -0
  247. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/ksm_app_clients.yaml +29 -0
  248. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/msp-fintech-saas.yaml +16 -0
  249. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/nhi_agent_ai_agent.yaml +14 -0
  250. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/nhi_agent_service_account.yaml +13 -0
  251. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/pam_rotation_policy.yaml +28 -0
  252. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/paved-road-eks.yaml +11 -0
  253. declarative_sdk_for_k-2.21.0/dsk/extras/patterns/vault_record_sharing.yaml +31 -0
  254. declarative_sdk_for_k-2.21.0/dsk/formats/__init__.py +1 -0
  255. declarative_sdk_for_k-2.21.0/dsk/formats/hcl_exporter.py +102 -0
  256. declarative_sdk_for_k-2.21.0/dsk/formats/hcl_importer.py +94 -0
  257. declarative_sdk_for_k-2.21.0/dsk/integrations/__init__.py +0 -0
  258. declarative_sdk_for_k-2.21.0/dsk/integrations/cspm_bridge.py +131 -0
  259. declarative_sdk_for_k-2.21.0/dsk/integrations/eso_bridge.py +213 -0
  260. declarative_sdk_for_k-2.21.0/dsk/integrations/k8s/__init__.py +11 -0
  261. declarative_sdk_for_k-2.21.0/dsk/integrations/k8s/eso.py +64 -0
  262. declarative_sdk_for_k-2.21.0/dsk/integrations/langchain.py +153 -0
  263. declarative_sdk_for_k-2.21.0/dsk/integrations/secret_scanner_bridge.py +129 -0
  264. declarative_sdk_for_k-2.21.0/dsk/integrations/slack_gate.py +118 -0
  265. declarative_sdk_for_k-2.21.0/dsk/integrations/ticket_gate.py +121 -0
  266. declarative_sdk_for_k-2.21.0/dsk/mcp/__init__.py +5 -0
  267. declarative_sdk_for_k-2.21.0/dsk/mcp/keepercmd_tools.py +324 -0
  268. declarative_sdk_for_k-2.21.0/dsk/mcp/manifest_helper.py +71 -0
  269. declarative_sdk_for_k-2.21.0/dsk/mcp/server.py +847 -0
  270. declarative_sdk_for_k-2.21.0/dsk/policy/__init__.py +0 -0
  271. declarative_sdk_for_k-2.21.0/dsk/policy/engine.py +160 -0
  272. declarative_sdk_for_k-2.21.0/dsk/providers/__init__.py +30 -0
  273. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/__init__.py +11 -0
  274. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/enterprise.py +227 -0
  275. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/epm.py +129 -0
  276. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/ksm.py +163 -0
  277. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/msp.py +265 -0
  278. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/pam_extended.py +223 -0
  279. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/rotation.py +317 -0
  280. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/saas.py +161 -0
  281. declarative_sdk_for_k-2.21.0/dsk/providers/_commander/workflow.py +169 -0
  282. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_cli_helpers.py +541 -0
  283. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/__init__.py +23 -0
  284. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/enterprise.py +1099 -0
  285. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/ksm.py +1112 -0
  286. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/msp.py +340 -0
  287. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/pam_core.py +1566 -0
  288. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/rotation.py +289 -0
  289. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/sharing.py +748 -0
  290. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/transport.py +822 -0
  291. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/transport_service_mode.py +168 -0
  292. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/vault.py +1521 -0
  293. declarative_sdk_for_k-2.21.0/dsk/providers/_commander_mixins/workflow_epm.py +891 -0
  294. declarative_sdk_for_k-2.21.0/dsk/providers/ai_policy_provider.py +93 -0
  295. declarative_sdk_for_k-2.21.0/dsk/providers/ai_token_provider.py +94 -0
  296. declarative_sdk_for_k-2.21.0/dsk/providers/commander_cli.py +1997 -0
  297. declarative_sdk_for_k-2.21.0/dsk/providers/commander_library_provider.py +384 -0
  298. declarative_sdk_for_k-2.21.0/dsk/providers/commander_service.py +399 -0
  299. declarative_sdk_for_k-2.21.0/dsk/providers/commander_version.py +242 -0
  300. declarative_sdk_for_k-2.21.0/dsk/providers/integrations_events_provider.py +106 -0
  301. declarative_sdk_for_k-2.21.0/dsk/providers/integrations_identity_provider.py +127 -0
  302. declarative_sdk_for_k-2.21.0/dsk/providers/k8s_eso_provider.py +285 -0
  303. declarative_sdk_for_k-2.21.0/dsk/providers/mock.py +2772 -0
  304. declarative_sdk_for_k-2.21.0/dsk/providers/pam_workflow_argv.py +231 -0
  305. declarative_sdk_for_k-2.21.0/dsk/providers/rest_provider_base.py +265 -0
  306. declarative_sdk_for_k-2.21.0/dsk/providers/service_client.py +253 -0
  307. declarative_sdk_for_k-2.21.0/dsk/providers/siem_provider.py +104 -0
  308. declarative_sdk_for_k-2.21.0/dsk/providers/terraform_provider.py +258 -0
  309. declarative_sdk_for_k-2.21.0/dsk/py.typed +1 -0
  310. declarative_sdk_for_k-2.21.0/dsk/secrets/__init__.py +104 -0
  311. declarative_sdk_for_k-2.21.0/dsk/secrets/bootstrap.py +596 -0
  312. declarative_sdk_for_k-2.21.0/dsk/secrets/bus.py +752 -0
  313. declarative_sdk_for_k-2.21.0/dsk/secrets/ksm.py +512 -0
  314. declarative_sdk_for_k-2.21.0/dsk/security/__init__.py +18 -0
  315. declarative_sdk_for_k-2.21.0/dsk/security/keeper_pubkey.py +101 -0
  316. declarative_sdk_for_k-2.21.0/dsk/security/minisign.py +155 -0
  317. declarative_sdk_for_k-2.21.0/dsk/shim/__init__.py +644 -0
  318. declarative_sdk_for_k-2.21.0/dsk/shim/_descriptor.py +234 -0
  319. declarative_sdk_for_k-2.21.0/dsk/shim/_types.py +140 -0
  320. declarative_sdk_for_k-2.21.0/keeper_sdk/__init__.py +141 -0
  321. declarative_sdk_for_k-2.21.0/pyproject.toml +180 -0
  322. declarative_sdk_for_k-2.21.0/setup.cfg +23 -0
  323. declarative_sdk_for_k-2.21.0/tests/test_adoption_smoke.py +119 -0
  324. declarative_sdk_for_k-2.21.0/tests/test_agent_kit.py +73 -0
  325. declarative_sdk_for_k-2.21.0/tests/test_agent_memory_policy_schema.py +140 -0
  326. declarative_sdk_for_k-2.21.0/tests/test_agentic_skill_policy_schema.py +247 -0
  327. declarative_sdk_for_k-2.21.0/tests/test_ai_act_profile.py +126 -0
  328. declarative_sdk_for_k-2.21.0/tests/test_ai_agent_plan.py +149 -0
  329. declarative_sdk_for_k-2.21.0/tests/test_ai_policy_models.py +80 -0
  330. declarative_sdk_for_k-2.21.0/tests/test_ai_policy_provider.py +125 -0
  331. declarative_sdk_for_k-2.21.0/tests/test_ai_security_examples.py +89 -0
  332. declarative_sdk_for_k-2.21.0/tests/test_ai_token_models.py +101 -0
  333. declarative_sdk_for_k-2.21.0/tests/test_ai_token_provider.py +112 -0
  334. declarative_sdk_for_k-2.21.0/tests/test_api_stability_tier1.py +556 -0
  335. declarative_sdk_for_k-2.21.0/tests/test_apply_lock.py +390 -0
  336. declarative_sdk_for_k-2.21.0/tests/test_apply_order_graphs.py +170 -0
  337. declarative_sdk_for_k-2.21.0/tests/test_audit_explain.py +176 -0
  338. declarative_sdk_for_k-2.21.0/tests/test_auth_helper.py +278 -0
  339. declarative_sdk_for_k-2.21.0/tests/test_auth_ksm.py +196 -0
  340. declarative_sdk_for_k-2.21.0/tests/test_bootstrap_ksm.py +872 -0
  341. declarative_sdk_for_k-2.21.0/tests/test_bus.py +67 -0
  342. declarative_sdk_for_k-2.21.0/tests/test_checkpoint.py +106 -0
  343. declarative_sdk_for_k-2.21.0/tests/test_cli.py +587 -0
  344. declarative_sdk_for_k-2.21.0/tests/test_cli_commands_extended.py +437 -0
  345. declarative_sdk_for_k-2.21.0/tests/test_cli_feature_matrix.py +98 -0
  346. declarative_sdk_for_k-2.21.0/tests/test_cli_main_dispatch.py +138 -0
  347. declarative_sdk_for_k-2.21.0/tests/test_cli_main_extended.py +242 -0
  348. declarative_sdk_for_k-2.21.0/tests/test_cli_main_msp_edges.py +115 -0
  349. declarative_sdk_for_k-2.21.0/tests/test_cli_main_public_api.py +22 -0
  350. declarative_sdk_for_k-2.21.0/tests/test_cli_module_helpers.py +300 -0
  351. declarative_sdk_for_k-2.21.0/tests/test_cli_refusal.py +197 -0
  352. declarative_sdk_for_k-2.21.0/tests/test_cli_root.py +77 -0
  353. declarative_sdk_for_k-2.21.0/tests/test_cli_scan.py +129 -0
  354. declarative_sdk_for_k-2.21.0/tests/test_cli_sharing_dispatch.py +170 -0
  355. declarative_sdk_for_k-2.21.0/tests/test_cloud_jit_models.py +84 -0
  356. declarative_sdk_for_k-2.21.0/tests/test_cmd_artifacts.py +127 -0
  357. declarative_sdk_for_k-2.21.0/tests/test_cmd_import_from_keepercmd.py +279 -0
  358. declarative_sdk_for_k-2.21.0/tests/test_cmmc_profile.py +131 -0
  359. declarative_sdk_for_k-2.21.0/tests/test_commander_capability_probes.py +154 -0
  360. declarative_sdk_for_k-2.21.0/tests/test_commander_checkpoint_hash.py +32 -0
  361. declarative_sdk_for_k-2.21.0/tests/test_commander_cli.py +3674 -0
  362. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_cov_a.py +752 -0
  363. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_cov_b.py +857 -0
  364. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_cov_c.py +784 -0
  365. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_coverage_a.py +798 -0
  366. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_dispatch.py +260 -0
  367. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_helpers.py +288 -0
  368. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_ksm_lifecycle.py +239 -0
  369. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_pam_gateway.py +159 -0
  370. declarative_sdk_for_k-2.21.0/tests/test_commander_cli_sharing.py +565 -0
  371. declarative_sdk_for_k-2.21.0/tests/test_commander_coverage_gap_patterns.py +33 -0
  372. declarative_sdk_for_k-2.21.0/tests/test_commander_library_provider.py +171 -0
  373. declarative_sdk_for_k-2.21.0/tests/test_commander_mixins_r9.py +221 -0
  374. declarative_sdk_for_k-2.21.0/tests/test_commander_service_provider.py +590 -0
  375. declarative_sdk_for_k-2.21.0/tests/test_commander_service_stub.py +35 -0
  376. declarative_sdk_for_k-2.21.0/tests/test_commander_transport_service_mode.py +81 -0
  377. declarative_sdk_for_k-2.21.0/tests/test_commander_vault_mixin_edges.py +280 -0
  378. declarative_sdk_for_k-2.21.0/tests/test_commander_version.py +263 -0
  379. declarative_sdk_for_k-2.21.0/tests/test_compat_shim.py +99 -0
  380. declarative_sdk_for_k-2.21.0/tests/test_compliance_bundle.py +408 -0
  381. declarative_sdk_for_k-2.21.0/tests/test_connection_profile.py +236 -0
  382. declarative_sdk_for_k-2.21.0/tests/test_coverage_followups.py +353 -0
  383. declarative_sdk_for_k-2.21.0/tests/test_crossplane_provider.py +154 -0
  384. declarative_sdk_for_k-2.21.0/tests/test_cspm_bridge.py +132 -0
  385. declarative_sdk_for_k-2.21.0/tests/test_daemon_drift_watch.py +357 -0
  386. declarative_sdk_for_k-2.21.0/tests/test_daybook_harness.py +116 -0
  387. declarative_sdk_for_k-2.21.0/tests/test_db_access_policy.py +94 -0
  388. declarative_sdk_for_k-2.21.0/tests/test_diff.py +1090 -0
  389. declarative_sdk_for_k-2.21.0/tests/test_diff_command.py +115 -0
  390. declarative_sdk_for_k-2.21.0/tests/test_diff_modules_batch.py +444 -0
  391. declarative_sdk_for_k-2.21.0/tests/test_discover.py +194 -0
  392. declarative_sdk_for_k-2.21.0/tests/test_discover_command.py +225 -0
  393. declarative_sdk_for_k-2.21.0/tests/test_doctor.py +55 -0
  394. declarative_sdk_for_k-2.21.0/tests/test_dor_scenarios.py +207 -0
  395. declarative_sdk_for_k-2.21.0/tests/test_dora_profile.py +71 -0
  396. declarative_sdk_for_k-2.21.0/tests/test_drift_policy_enforce.py +39 -0
  397. declarative_sdk_for_k-2.21.0/tests/test_drift_watch.py +303 -0
  398. declarative_sdk_for_k-2.21.0/tests/test_drift_watch_preview_gate.py +57 -0
  399. declarative_sdk_for_k-2.21.0/tests/test_dsk_run.py +199 -0
  400. declarative_sdk_for_k-2.21.0/tests/test_dsk_tf_bridge.py +78 -0
  401. declarative_sdk_for_k-2.21.0/tests/test_dx_tools.py +123 -0
  402. declarative_sdk_for_k-2.21.0/tests/test_enterprise_apply.py +212 -0
  403. declarative_sdk_for_k-2.21.0/tests/test_enterprise_import.py +167 -0
  404. declarative_sdk_for_k-2.21.0/tests/test_enterprise_models.py +153 -0
  405. declarative_sdk_for_k-2.21.0/tests/test_enterprise_schema.py +367 -0
  406. declarative_sdk_for_k-2.21.0/tests/test_enterprise_writes.py +53 -0
  407. declarative_sdk_for_k-2.21.0/tests/test_epm_extended.py +211 -0
  408. declarative_sdk_for_k-2.21.0/tests/test_epm_manifest.py +231 -0
  409. declarative_sdk_for_k-2.21.0/tests/test_epm_policy.py +84 -0
  410. declarative_sdk_for_k-2.21.0/tests/test_epm_policy_apply.py +217 -0
  411. declarative_sdk_for_k-2.21.0/tests/test_epm_schema.py +276 -0
  412. declarative_sdk_for_k-2.21.0/tests/test_errors.py +63 -0
  413. declarative_sdk_for_k-2.21.0/tests/test_eso_bridge.py +337 -0
  414. declarative_sdk_for_k-2.21.0/tests/test_evidence_stream.py +130 -0
  415. declarative_sdk_for_k-2.21.0/tests/test_examples_validate.py +53 -0
  416. declarative_sdk_for_k-2.21.0/tests/test_exit_codes_contract.py +77 -0
  417. declarative_sdk_for_k-2.21.0/tests/test_field_names.py +30 -0
  418. declarative_sdk_for_k-2.21.0/tests/test_gateway_ha_epm.py +51 -0
  419. declarative_sdk_for_k-2.21.0/tests/test_governance_transfer.py +114 -0
  420. declarative_sdk_for_k-2.21.0/tests/test_graph.py +138 -0
  421. declarative_sdk_for_k-2.21.0/tests/test_h_series_gaps.py +367 -0
  422. declarative_sdk_for_k-2.21.0/tests/test_hcl_formats.py +126 -0
  423. declarative_sdk_for_k-2.21.0/tests/test_import_from_keepercmd.py +969 -0
  424. declarative_sdk_for_k-2.21.0/tests/test_inline_rotation_jit_apply.py +261 -0
  425. declarative_sdk_for_k-2.21.0/tests/test_integrations_events.py +358 -0
  426. declarative_sdk_for_k-2.21.0/tests/test_integrations_events_provider.py +136 -0
  427. declarative_sdk_for_k-2.21.0/tests/test_integrations_identity.py +334 -0
  428. declarative_sdk_for_k-2.21.0/tests/test_integrations_identity_provider.py +162 -0
  429. declarative_sdk_for_k-2.21.0/tests/test_integrations_offline.py +189 -0
  430. declarative_sdk_for_k-2.21.0/tests/test_interfaces.py +133 -0
  431. declarative_sdk_for_k-2.21.0/tests/test_itsm_gate.py +79 -0
  432. declarative_sdk_for_k-2.21.0/tests/test_jit_access.py +62 -0
  433. declarative_sdk_for_k-2.21.0/tests/test_jit_failclosed.py +125 -0
  434. declarative_sdk_for_k-2.21.0/tests/test_jit_models.py +65 -0
  435. declarative_sdk_for_k-2.21.0/tests/test_json_manifest.py +116 -0
  436. declarative_sdk_for_k-2.21.0/tests/test_k8s_eso.py +201 -0
  437. declarative_sdk_for_k-2.21.0/tests/test_k8s_eso_provider.py +173 -0
  438. declarative_sdk_for_k-2.21.0/tests/test_k8s_operator.py +118 -0
  439. declarative_sdk_for_k-2.21.0/tests/test_keeper_drive_schema.py +116 -0
  440. declarative_sdk_for_k-2.21.0/tests/test_keeper_enterprise_schema.py +237 -0
  441. declarative_sdk_for_k-2.21.0/tests/test_keeper_integrations_events_schema.py +160 -0
  442. declarative_sdk_for_k-2.21.0/tests/test_keeper_integrations_identity_schema.py +143 -0
  443. declarative_sdk_for_k-2.21.0/tests/test_keeper_ksm_schema.py +85 -0
  444. declarative_sdk_for_k-2.21.0/tests/test_keeper_pam_environment_schema.py +54 -0
  445. declarative_sdk_for_k-2.21.0/tests/test_keeper_pam_extended_schema.py +241 -0
  446. declarative_sdk_for_k-2.21.0/tests/test_keeper_vault_schema.py +214 -0
  447. declarative_sdk_for_k-2.21.0/tests/test_keeper_vault_sharing_schema.py +292 -0
  448. declarative_sdk_for_k-2.21.0/tests/test_keepercmd_mcp_tools.py +561 -0
  449. declarative_sdk_for_k-2.21.0/tests/test_ksm_app_create.py +290 -0
  450. declarative_sdk_for_k-2.21.0/tests/test_ksm_app_lifecycle.py +117 -0
  451. declarative_sdk_for_k-2.21.0/tests/test_ksm_app_reference.py +103 -0
  452. declarative_sdk_for_k-2.21.0/tests/test_ksm_apply_lifecycle.py +193 -0
  453. declarative_sdk_for_k-2.21.0/tests/test_ksm_bus.py +170 -0
  454. declarative_sdk_for_k-2.21.0/tests/test_ksm_bus_impl.py +256 -0
  455. declarative_sdk_for_k-2.21.0/tests/test_ksm_bus_stub.py +39 -0
  456. declarative_sdk_for_k-2.21.0/tests/test_ksm_extras.py +488 -0
  457. declarative_sdk_for_k-2.21.0/tests/test_ksm_provider_mock.py +277 -0
  458. declarative_sdk_for_k-2.21.0/tests/test_ksm_schema.py +323 -0
  459. declarative_sdk_for_k-2.21.0/tests/test_ksm_usage_report.py +318 -0
  460. declarative_sdk_for_k-2.21.0/tests/test_langchain_integration.py +179 -0
  461. declarative_sdk_for_k-2.21.0/tests/test_live_proof_artifacts.py +51 -0
  462. declarative_sdk_for_k-2.21.0/tests/test_live_transcript.py +114 -0
  463. declarative_sdk_for_k-2.21.0/tests/test_manifest.py +80 -0
  464. declarative_sdk_for_k-2.21.0/tests/test_manifest_errors.py +498 -0
  465. declarative_sdk_for_k-2.21.0/tests/test_manifest_loader_sharing.py +90 -0
  466. declarative_sdk_for_k-2.21.0/tests/test_manifest_schema_errors.py +169 -0
  467. declarative_sdk_for_k-2.21.0/tests/test_mcp_allowlist_schema.py +156 -0
  468. declarative_sdk_for_k-2.21.0/tests/test_mcp_models.py +62 -0
  469. declarative_sdk_for_k-2.21.0/tests/test_mcp_server.py +588 -0
  470. declarative_sdk_for_k-2.21.0/tests/test_mcp_server_extended.py +622 -0
  471. declarative_sdk_for_k-2.21.0/tests/test_metadata.py +72 -0
  472. declarative_sdk_for_k-2.21.0/tests/test_mock_provider_ai_compliance_dispatch.py +222 -0
  473. declarative_sdk_for_k-2.21.0/tests/test_mock_provider_extended.py +572 -0
  474. declarative_sdk_for_k-2.21.0/tests/test_mock_provider_pam_bridge_dispatch.py +473 -0
  475. declarative_sdk_for_k-2.21.0/tests/test_msp_apply.py +260 -0
  476. declarative_sdk_for_k-2.21.0/tests/test_msp_apply_lifecycle.py +114 -0
  477. declarative_sdk_for_k-2.21.0/tests/test_msp_cli.py +233 -0
  478. declarative_sdk_for_k-2.21.0/tests/test_msp_commander_row_map.py +88 -0
  479. declarative_sdk_for_k-2.21.0/tests/test_msp_diff.py +264 -0
  480. declarative_sdk_for_k-2.21.0/tests/test_msp_environment_p0.py +113 -0
  481. declarative_sdk_for_k-2.21.0/tests/test_msp_examples.py +52 -0
  482. declarative_sdk_for_k-2.21.0/tests/test_msp_graph.py +103 -0
  483. declarative_sdk_for_k-2.21.0/tests/test_msp_marker.py +149 -0
  484. declarative_sdk_for_k-2.21.0/tests/test_msp_mock_provider.py +451 -0
  485. declarative_sdk_for_k-2.21.0/tests/test_msp_models.py +231 -0
  486. declarative_sdk_for_k-2.21.0/tests/test_msp_planner.py +175 -0
  487. declarative_sdk_for_k-2.21.0/tests/test_nhi_ai_agent_schema.py +383 -0
  488. declarative_sdk_for_k-2.21.0/tests/test_nhi_ai_agent_schemas.py +122 -0
  489. declarative_sdk_for_k-2.21.0/tests/test_nhi_plan.py +138 -0
  490. declarative_sdk_for_k-2.21.0/tests/test_normalize.py +248 -0
  491. declarative_sdk_for_k-2.21.0/tests/test_obs.py +149 -0
  492. declarative_sdk_for_k-2.21.0/tests/test_orient_export.py +91 -0
  493. declarative_sdk_for_k-2.21.0/tests/test_pam_config_drift.py +275 -0
  494. declarative_sdk_for_k-2.21.0/tests/test_pam_db_proxy.py +207 -0
  495. declarative_sdk_for_k-2.21.0/tests/test_pam_extended.py +282 -0
  496. declarative_sdk_for_k-2.21.0/tests/test_pam_extended_apply.py +297 -0
  497. declarative_sdk_for_k-2.21.0/tests/test_pam_extended_plan.py +168 -0
  498. declarative_sdk_for_k-2.21.0/tests/test_pam_extended_schema.py +108 -0
  499. declarative_sdk_for_k-2.21.0/tests/test_pam_rotation_readback.py +261 -0
  500. declarative_sdk_for_k-2.21.0/tests/test_pam_user_saas_plugins.py +213 -0
  501. declarative_sdk_for_k-2.21.0/tests/test_pam_workflow_settings.py +264 -0
  502. declarative_sdk_for_k-2.21.0/tests/test_perf.py +152 -0
  503. declarative_sdk_for_k-2.21.0/tests/test_phase4a_smoke.py +483 -0
  504. declarative_sdk_for_k-2.21.0/tests/test_phase_b_schema.py +140 -0
  505. declarative_sdk_for_k-2.21.0/tests/test_phase_harness_scripts.py +75 -0
  506. declarative_sdk_for_k-2.21.0/tests/test_pipeline_env.py +70 -0
  507. declarative_sdk_for_k-2.21.0/tests/test_plan_format_flag.py +73 -0
  508. declarative_sdk_for_k-2.21.0/tests/test_planner.py +121 -0
  509. declarative_sdk_for_k-2.21.0/tests/test_policy_engine.py +152 -0
  510. declarative_sdk_for_k-2.21.0/tests/test_policy_scaffolds.py +306 -0
  511. declarative_sdk_for_k-2.21.0/tests/test_pqc_load_export.py +67 -0
  512. declarative_sdk_for_k-2.21.0/tests/test_pqc_policy.py +90 -0
  513. declarative_sdk_for_k-2.21.0/tests/test_preview_gate.py +233 -0
  514. declarative_sdk_for_k-2.21.0/tests/test_privileged_access_plan.py +127 -0
  515. declarative_sdk_for_k-2.21.0/tests/test_privileged_access_schema.py +87 -0
  516. declarative_sdk_for_k-2.21.0/tests/test_property_manifest_v1.py +924 -0
  517. declarative_sdk_for_k-2.21.0/tests/test_providers.py +112 -0
  518. declarative_sdk_for_k-2.21.0/tests/test_public_api_exports.py +58 -0
  519. declarative_sdk_for_k-2.21.0/tests/test_pulumi_provider.py +103 -0
  520. declarative_sdk_for_k-2.21.0/tests/test_rbi_list_fields.py +192 -0
  521. declarative_sdk_for_k-2.21.0/tests/test_rbi_readback.py +177 -0
  522. declarative_sdk_for_k-2.21.0/tests/test_rbi_upstream_gap.py +152 -0
  523. declarative_sdk_for_k-2.21.0/tests/test_readme_links.py +83 -0
  524. declarative_sdk_for_k-2.21.0/tests/test_red_team_r23.py +510 -0
  525. declarative_sdk_for_k-2.21.0/tests/test_redact.py +118 -0
  526. declarative_sdk_for_k-2.21.0/tests/test_redaction_e2e.py +191 -0
  527. declarative_sdk_for_k-2.21.0/tests/test_refusal.py +161 -0
  528. declarative_sdk_for_k-2.21.0/tests/test_rehearse_report.py +160 -0
  529. declarative_sdk_for_k-2.21.0/tests/test_renderer_snapshots.py +341 -0
  530. declarative_sdk_for_k-2.21.0/tests/test_report_commands.py +289 -0
  531. declarative_sdk_for_k-2.21.0/tests/test_report_role_report.py +280 -0
  532. declarative_sdk_for_k-2.21.0/tests/test_report_runner.py +191 -0
  533. declarative_sdk_for_k-2.21.0/tests/test_report_team_report.py +278 -0
  534. declarative_sdk_for_k-2.21.0/tests/test_report_team_roles.py +220 -0
  535. declarative_sdk_for_k-2.21.0/tests/test_report_vault_health.py +168 -0
  536. declarative_sdk_for_k-2.21.0/tests/test_resource_limits.py +247 -0
  537. declarative_sdk_for_k-2.21.0/tests/test_rest_provider_base.py +528 -0
  538. declarative_sdk_for_k-2.21.0/tests/test_rotation_policy.py +252 -0
  539. declarative_sdk_for_k-2.21.0/tests/test_rotation_retry.py +18 -0
  540. declarative_sdk_for_k-2.21.0/tests/test_rules.py +104 -0
  541. declarative_sdk_for_k-2.21.0/tests/test_saas_rotation_apply.py +254 -0
  542. declarative_sdk_for_k-2.21.0/tests/test_saas_rotation_schema.py +137 -0
  543. declarative_sdk_for_k-2.21.0/tests/test_schema.py +159 -0
  544. declarative_sdk_for_k-2.21.0/tests/test_schema_registry.py +78 -0
  545. declarative_sdk_for_k-2.21.0/tests/test_scim_apply.py +226 -0
  546. declarative_sdk_for_k-2.21.0/tests/test_scim_models.py +106 -0
  547. declarative_sdk_for_k-2.21.0/tests/test_scim_source_variants.py +203 -0
  548. declarative_sdk_for_k-2.21.0/tests/test_scim_structural_apply.py +581 -0
  549. declarative_sdk_for_k-2.21.0/tests/test_secret_scanner.py +249 -0
  550. declarative_sdk_for_k-2.21.0/tests/test_secrets_ksm.py +237 -0
  551. declarative_sdk_for_k-2.21.0/tests/test_security_hardening.py +265 -0
  552. declarative_sdk_for_k-2.21.0/tests/test_service_client.py +280 -0
  553. declarative_sdk_for_k-2.21.0/tests/test_service_mode.py +166 -0
  554. declarative_sdk_for_k-2.21.0/tests/test_shared_folder_apply.py +208 -0
  555. declarative_sdk_for_k-2.21.0/tests/test_shared_folder_commander.py +296 -0
  556. declarative_sdk_for_k-2.21.0/tests/test_shared_folder_model.py +121 -0
  557. declarative_sdk_for_k-2.21.0/tests/test_sharing_diff_folders.py +304 -0
  558. declarative_sdk_for_k-2.21.0/tests/test_sharing_diff_record_shares.py +244 -0
  559. declarative_sdk_for_k-2.21.0/tests/test_sharing_diff_share_folders.py +252 -0
  560. declarative_sdk_for_k-2.21.0/tests/test_sharing_diff_shared_folders.py +229 -0
  561. declarative_sdk_for_k-2.21.0/tests/test_sharing_mock_provider.py +291 -0
  562. declarative_sdk_for_k-2.21.0/tests/test_sharing_mock_provider_siblings.py +673 -0
  563. declarative_sdk_for_k-2.21.0/tests/test_sharing_models.py +218 -0
  564. declarative_sdk_for_k-2.21.0/tests/test_shim_artifact_io.py +82 -0
  565. declarative_sdk_for_k-2.21.0/tests/test_shim_descriptor_signatures.py +37 -0
  566. declarative_sdk_for_k-2.21.0/tests/test_shim_info.py +92 -0
  567. declarative_sdk_for_k-2.21.0/tests/test_shim_library.py +161 -0
  568. declarative_sdk_for_k-2.21.0/tests/test_shim_redaction.py +103 -0
  569. declarative_sdk_for_k-2.21.0/tests/test_siem_diff_adapter.py +104 -0
  570. declarative_sdk_for_k-2.21.0/tests/test_siem_provider.py +138 -0
  571. declarative_sdk_for_k-2.21.0/tests/test_siem_schema.py +310 -0
  572. declarative_sdk_for_k-2.21.0/tests/test_slack_gate.py +234 -0
  573. declarative_sdk_for_k-2.21.0/tests/test_smoke_args.py +186 -0
  574. declarative_sdk_for_k-2.21.0/tests/test_smoke_parallel_guard.py +277 -0
  575. declarative_sdk_for_k-2.21.0/tests/test_smoke_profile_default_back_compat.py +115 -0
  576. declarative_sdk_for_k-2.21.0/tests/test_smoke_profile_load.py +88 -0
  577. declarative_sdk_for_k-2.21.0/tests/test_smoke_scenarios.py +294 -0
  578. declarative_sdk_for_k-2.21.0/tests/test_smoke_sharing_lifecycle.py +415 -0
  579. declarative_sdk_for_k-2.21.0/tests/test_smoke_vault_scenarios.py +183 -0
  580. declarative_sdk_for_k-2.21.0/tests/test_spiffe_models.py +77 -0
  581. declarative_sdk_for_k-2.21.0/tests/test_spiffe_runtime.py +209 -0
  582. declarative_sdk_for_k-2.21.0/tests/test_stage_5_bindings.py +360 -0
  583. declarative_sdk_for_k-2.21.0/tests/test_sync_upstream.py +275 -0
  584. declarative_sdk_for_k-2.21.0/tests/test_team_role_report.py +119 -0
  585. declarative_sdk_for_k-2.21.0/tests/test_teams_roles_validate.py +150 -0
  586. declarative_sdk_for_k-2.21.0/tests/test_terraform_integration.py +139 -0
  587. declarative_sdk_for_k-2.21.0/tests/test_terraform_provider.py +374 -0
  588. declarative_sdk_for_k-2.21.0/tests/test_ticket_gate.py +150 -0
  589. declarative_sdk_for_k-2.21.0/tests/test_trust_chain.py +81 -0
  590. declarative_sdk_for_k-2.21.0/tests/test_tunnel_schema.py +128 -0
  591. declarative_sdk_for_k-2.21.0/tests/test_two_writer.py +196 -0
  592. declarative_sdk_for_k-2.21.0/tests/test_uid_ref_gate.py +80 -0
  593. declarative_sdk_for_k-2.21.0/tests/test_v18_gates.py +157 -0
  594. declarative_sdk_for_k-2.21.0/tests/test_validate_gate.py +106 -0
  595. declarative_sdk_for_k-2.21.0/tests/test_vault_broader.py +282 -0
  596. declarative_sdk_for_k-2.21.0/tests/test_vault_custom_fields.py +92 -0
  597. declarative_sdk_for_k-2.21.0/tests/test_vault_diff.py +475 -0
  598. declarative_sdk_for_k-2.21.0/tests/test_vault_diff_attachments.py +228 -0
  599. declarative_sdk_for_k-2.21.0/tests/test_vault_diff_keeper_fill.py +257 -0
  600. declarative_sdk_for_k-2.21.0/tests/test_vault_diff_record_types.py +217 -0
  601. declarative_sdk_for_k-2.21.0/tests/test_vault_graph.py +90 -0
  602. declarative_sdk_for_k-2.21.0/tests/test_vault_health.py +598 -0
  603. declarative_sdk_for_k-2.21.0/tests/test_vault_health_report.py +335 -0
  604. declarative_sdk_for_k-2.21.0/tests/test_vault_l2_typed_records.py +276 -0
  605. declarative_sdk_for_k-2.21.0/tests/test_vault_mock_provider.py +185 -0
  606. declarative_sdk_for_k-2.21.0/tests/test_vault_models.py +160 -0
  607. declarative_sdk_for_k-2.21.0/tests/test_vault_schema.py +281 -0
  608. declarative_sdk_for_k-2.21.0/tests/test_vault_shared_folder.py +543 -0
  609. declarative_sdk_for_k-2.21.0/tests/test_vault_sharing_schema.py +333 -0
  610. declarative_sdk_for_k-2.21.0/tests/test_vault_update_smoke.py +239 -0
  611. declarative_sdk_for_k-2.21.0/tests/test_vault_validate_semantic.py +150 -0
  612. declarative_sdk_for_k-2.21.0/tests/test_verify_cmd.py +147 -0
  613. declarative_sdk_for_k-2.21.0/tests/test_w3_ab_audit.py +150 -0
  614. declarative_sdk_for_k-2.21.0/tests/test_w7_families_mock.py +589 -0
  615. declarative_sdk_for_k-2.21.0/tests/test_workflow_apply.py +376 -0
  616. declarative_sdk_for_k-2.21.0/tests/test_workflow_models.py +67 -0
  617. declarative_sdk_for_k-2.21.0/tests/test_workflow_saas_models.py +113 -0
  618. declarative_sdk_for_k-2.21.0/tests/test_workflow_schema.py +78 -0
  619. declarative_sdk_for_k-2.21.0/webui/__init__.py +21 -0
  620. declarative_sdk_for_k-2.21.0/webui/server.py +1040 -0
  621. declarative_sdk_for_k-2.21.0/webui/static/app.js +886 -0
  622. declarative_sdk_for_k-2.21.0/webui/static/img/logo.svg +25 -0
  623. declarative_sdk_for_k-2.21.0/webui/static/index.html +430 -0
  624. declarative_sdk_for_k-2.21.0/webui/static/styles.css +662 -0
  625. declarative_sdk_for_k-2.21.0/webui/stream.py +454 -0
  626. declarative_sdk_for_k-2.21.0/webui/tests/__init__.py +0 -0
  627. declarative_sdk_for_k-2.21.0/webui/tests/test_server.py +634 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 Martin Sawczyn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,54 @@
1
+ DSK incorporates the following third-party libraries; their licenses and attributions are reproduced or referenced below.
2
+
3
+ Name: click
4
+ License: BSD-3-Clause
5
+ Copyright holder: Pallets
6
+ Project URL: https://github.com/pallets/click
7
+
8
+ Name: cryptography
9
+ License: Apache-2.0 OR BSD-3-Clause
10
+ Copyright holder: The Python Cryptographic Authority and individual contributors
11
+ Project URL: https://github.com/pyca/cryptography
12
+
13
+ Name: pydantic
14
+ License: MIT
15
+ Copyright holder: Samuel Colvin
16
+ Project URL: https://github.com/pydantic/pydantic
17
+
18
+ Name: networkx
19
+ License: BSD-3-Clause
20
+ Copyright holder: NetworkX Developers
21
+ Project URL: https://github.com/networkx/networkx
22
+
23
+ Name: pyyaml
24
+ License: MIT
25
+ Copyright holder: Kirill Simonov
26
+ Project URL: https://github.com/yaml/pyyaml
27
+
28
+ Name: rich
29
+ License: MIT
30
+ Copyright holder: Will McGugan
31
+ Project URL: https://github.com/Textualize/rich
32
+
33
+ Name: jsonschema
34
+ License: MIT
35
+ Copyright holder: Julian Berman
36
+ Project URL: https://github.com/python-jsonschema/jsonschema
37
+
38
+ Name: keepercommander
39
+ License: MIT
40
+ Copyright holder: Keeper Security Inc.
41
+ Project URL: https://github.com/Keeper-Security/Commander
42
+
43
+ Name: protobuf
44
+ License: BSD-3-Clause
45
+ Copyright holder: Google LLC
46
+ Project URL: https://github.com/protocolbuffers/protobuf
47
+
48
+ Name: pyotp
49
+ License: MIT
50
+ Copyright holder: Mark Percival and PyOTP contributors
51
+ Project URL: https://github.com/pyauth/pyotp
52
+
53
+ This notice is provided for attribution convenience and does not replace the
54
+ license files distributed by the third-party projects.
@@ -0,0 +1,526 @@
1
+ Metadata-Version: 2.4
2
+ Name: declarative-sdk-for-k
3
+ Version: 2.21.0
4
+ Summary: Declarative lifecycle library for Keeper tenant state — adopt, plan, apply, diff, drift-watch, audit-explain. Terraform-style workflow for Keeper PAM, vault, MSP, and KSM.
5
+ Author-email: Martin Sawczyn <martin@augenblik.eu>
6
+ Maintainer-email: Martin Sawczyn <martin@augenblik.eu>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/msawczynk/dsk
9
+ Project-URL: Repository, https://github.com/msawczynk/dsk
10
+ Project-URL: Documentation, https://msawczynk.github.io/dsk/
11
+ Project-URL: Issues, https://github.com/msawczynk/dsk/issues
12
+ Project-URL: Changelog, https://github.com/msawczynk/dsk/blob/main/CHANGELOG.md
13
+ Keywords: keeper,vault,pam,ksm,enterprise,declarative,iac,agents,llm,terraform-like
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Topic :: Security
21
+ Classifier: Topic :: System :: Systems Administration
22
+ Classifier: Intended Audience :: Developers
23
+ Classifier: Intended Audience :: System Administrators
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ License-File: NOTICE
28
+ Requires-Dist: click>=8.1
29
+ Requires-Dist: cryptography<49,>=42
30
+ Requires-Dist: pydantic>=2.0
31
+ Requires-Dist: networkx>=3.0
32
+ Requires-Dist: pyyaml>=6.0
33
+ Requires-Dist: rich>=13.0
34
+ Requires-Dist: jsonschema>=4.21
35
+ Requires-Dist: keepercommander<19,>=18.0
36
+ Requires-Dist: protobuf<7,>=4.25
37
+ Requires-Dist: pyotp
38
+ Provides-Extra: dev
39
+ Requires-Dist: pytest>=7.0; extra == "dev"
40
+ Requires-Dist: pytest-cov; extra == "dev"
41
+ Requires-Dist: mypy; extra == "dev"
42
+ Requires-Dist: ruff==0.15.10; extra == "dev"
43
+ Requires-Dist: bandit>=1.9; extra == "dev"
44
+ Requires-Dist: build; extra == "dev"
45
+ Requires-Dist: twine; extra == "dev"
46
+ Requires-Dist: types-PyYAML; extra == "dev"
47
+ Requires-Dist: types-jsonschema; extra == "dev"
48
+ Requires-Dist: hypothesis; extra == "dev"
49
+ Requires-Dist: pytest-benchmark; extra == "dev"
50
+ Requires-Dist: mutmut; extra == "dev"
51
+ Requires-Dist: deptry; extra == "dev"
52
+ Requires-Dist: mkdocs; extra == "dev"
53
+ Requires-Dist: mkdocs-material; extra == "dev"
54
+ Requires-Dist: cyclonedx-bom; extra == "dev"
55
+ Provides-Extra: ksm
56
+ Requires-Dist: keeper-secrets-manager-core<18,>=17.2.0; extra == "ksm"
57
+ Provides-Extra: mcp
58
+ Requires-Dist: mcp[cli]>=1.0.0; extra == "mcp"
59
+ Provides-Extra: hcl
60
+ Requires-Dist: python-hcl2>=4.0.0; extra == "hcl"
61
+ Provides-Extra: spiffe
62
+ Requires-Dist: PyJWT<3,>=2.8; extra == "spiffe"
63
+ Requires-Dist: requests<3,>=2.31; extra == "spiffe"
64
+ Provides-Extra: slack
65
+ Requires-Dist: requests<3,>=2.31; extra == "slack"
66
+ Provides-Extra: langchain
67
+ Requires-Dist: langchain<2,>=0.3; extra == "langchain"
68
+ Provides-Extra: service
69
+ Requires-Dist: cryptography<49,>=42; extra == "service"
70
+ Provides-Extra: webui
71
+ Requires-Dist: fastapi>=0.110; extra == "webui"
72
+ Requires-Dist: uvicorn[standard]>=0.27; extra == "webui"
73
+ Dynamic: license-file
74
+
75
+ # Keeper Declarative SDK (DSK)
76
+
77
+ [![CI](https://github.com/msawczynk/dsk/actions/workflows/ci.yml/badge.svg)](https://github.com/msawczynk/dsk/actions/workflows/ci.yml)
78
+ [![PyPI](https://img.shields.io/pypi/v/declarative-sdk-for-k.svg)](https://pypi.org/project/declarative-sdk-for-k/)
79
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
80
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
81
+
82
+ > **Not an official Keeper Security product.** DSK is an independent community tool. It is not endorsed by, affiliated with, or supported by Keeper Security, Inc. For official Keeper tooling see the [Keeper Terraform provider](https://registry.terraform.io/providers/Keeper-Security/keeper/latest) and [Keeper Commander](https://github.com/Keeper-Security/Commander).
83
+
84
+ ## Status
85
+
86
+ DSK is in beta and being prepared for absorption into Keeper Security's
87
+ official tooling. See [`HANDOVER.md`](HANDOVER.md) for the absorption intent
88
+ and current status.
89
+
90
+ > **For Keeper executive review:** see [`docs/SHOWCASE-FOR-CRAIG.md`](docs/SHOWCASE-FOR-CRAIG.md).
91
+
92
+ - [**Demo for Keeper Engineering**](docs/CRAIG-DEMO.md) — 10-minute hands-on walkthrough
93
+
94
+ Security policy: [`SECURITY.md`](SECURITY.md). Contribution guide:
95
+ [`CONTRIBUTING.md`](CONTRIBUTING.md).
96
+
97
+ ## What is this, in plain English?
98
+
99
+ **At a glance:** `validate` → `plan` → `apply` (see [`docs/QUICK_START.md`](docs/QUICK_START.md)), plus `import` / `export` and reports. Copy-paste examples live in [`docs/EXAMPLES.md`](docs/EXAMPLES.md) and the [`examples/`](examples/) tree. To see a keeperCMD run-dir work in five minutes, start with [`examples/01-verify-existing-rundir/`](examples/01-verify-existing-rundir/).
100
+
101
+
102
+ **DSK lets you describe what your Keeper tenant should look like in a YAML
103
+ file, then asks the SDK to make the live tenant match.**
104
+
105
+ The Python library API is two-tiered: the narrow absorption API for
106
+ `keeper_tenant_migrate` is documented in [`LIBRARY_API.md`](LIBRARY_API.md),
107
+ while the wider standalone DSK modules remain available outside that
108
+ absorption contract.
109
+
110
+ You write a manifest (one file, plain YAML) that lists the gateways,
111
+ configurations, machines, databases, vault records, KSM apps, MSP
112
+ companies, and policies you want. You then run three commands:
113
+
114
+ | Command | What it does | Plain-English meaning |
115
+ |---------|--------------|-----------------------|
116
+ | `dsk validate manifest.yaml` | Schema + reference + capability checks | "Is this file even legal?" |
117
+ | `dsk plan manifest.yaml` | Compares manifest to live tenant | "What would change if I applied this?" |
118
+ | `dsk apply manifest.yaml` | Executes the plan | "Make the tenant match the file." |
119
+
120
+ That's the whole loop. It is the same loop Terraform uses for cloud
121
+ infrastructure — DSK is the equivalent for Keeper PAM, vault, MSP, and
122
+ KSM. You can preview every change before it runs, and DSK only ever
123
+ touches records it can prove it owns (via ownership markers it writes
124
+ when you import or apply).
125
+
126
+ DSK is **complementary to Terraform, not a replacement.** If you already
127
+ use the official [Keeper Terraform provider](https://registry.terraform.io/providers/Keeper-Security/commander/latest/docs)
128
+ for some resources, keep using it; DSK can sit beside it for everything
129
+ the Terraform provider doesn't yet cover, or for teams that prefer a
130
+ single Python-native loop with explicit human-in-the-loop confirmation.
131
+ See [`docs/TERRAFORM_INTEGRATION.md`](docs/TERRAFORM_INTEGRATION.md) for
132
+ ownership-boundary guidance.
133
+
134
+ ---
135
+
136
+ ## Why use it?
137
+
138
+ - **Reviewable change.** Every mutation is a YAML diff in a pull request.
139
+ - **Safe by default.** `plan` is dry-run; `apply` requires `--auto-approve`
140
+ or an interactive prompt; deletes need an explicit `--allow-delete`.
141
+ - **Mock provider for CI.** Run the full loop offline against a fake
142
+ tenant — no Keeper credentials needed in pull-request checks.
143
+ - **Live provider for production.** When you're ready, point the same
144
+ manifests at a real Keeper tenant via the bundled Commander
145
+ integration.
146
+ - **Typed exit codes.** CI pipelines branch on integers, not regexes.
147
+ - **Built for AI agents.** Every command has a `--json` mode and a
148
+ documented JSON contract; see [`AGENTS.md`](AGENTS.md).
149
+
150
+ ---
151
+
152
+ ## Install and verify
153
+
154
+ ```bash
155
+ pip install declarative-sdk-for-k
156
+ dsk --version
157
+ dsk doctor
158
+ ```
159
+
160
+ Need a specific git ref or extras (HCL, MCP, KSM)? See
161
+ [`docs/INSTALLATION.md`](docs/INSTALLATION.md).
162
+
163
+ ---
164
+
165
+ ## A walkthrough you can copy-paste
166
+
167
+ Save this as `acme-lab.yaml`:
168
+
169
+ ```yaml
170
+ schema: pam-environment.v1
171
+ name: acme-lab
172
+ resources:
173
+ - uid_ref: gw.lab
174
+ resource_type: pamGateway
175
+ title: Lab Gateway
176
+ - uid_ref: cfg.aws
177
+ resource_type: pamConfiguration
178
+ title: AWS PAM Config
179
+ gateway_uid_ref: gw.lab
180
+ - uid_ref: db.prod
181
+ resource_type: pamDatabase
182
+ title: prod-mysql
183
+ pam_configuration_uid_ref: cfg.aws
184
+ host: prod.example.com
185
+ port: 3306
186
+ ```
187
+
188
+ Run the loop offline against the mock provider (no credentials needed):
189
+
190
+ ```bash
191
+ dsk validate acme-lab.yaml --provider mock
192
+ dsk plan acme-lab.yaml --provider mock
193
+ dsk apply acme-lab.yaml --provider mock --auto-approve
194
+ ```
195
+
196
+ `validate` confirms the file is well-formed. `plan` prints a table of
197
+ what would change. `apply` performs those changes against the in-memory
198
+ mock tenant.
199
+
200
+ When you're ready to point at the real tenant, drop `--provider mock`
201
+ and export the credentials (see [`docs/LOGIN.md`](docs/LOGIN.md)):
202
+
203
+ ```bash
204
+ export KEEPER_EMAIL='you@example.com'
205
+ export KEEPER_PASSWORD='...'
206
+ export KEEPER_TOTP_SECRET='BASE32SECRET' # not the 6-digit code
207
+
208
+ dsk validate acme-lab.yaml --online
209
+ dsk plan acme-lab.yaml
210
+ dsk apply acme-lab.yaml --auto-approve
211
+ ```
212
+
213
+ The five-minute walkthrough lives at
214
+ [`docs/QUICK_START.md`](docs/QUICK_START.md).
215
+
216
+ ---
217
+
218
+ ## Common tasks (recipe book)
219
+
220
+ ### 1. "I want to see what would change without changing anything."
221
+
222
+ ```bash
223
+ dsk plan acme-lab.yaml --json | jq '.summary'
224
+ ```
225
+
226
+ Exit `0` = clean, `2` = changes present, `4` = conflicts. Full JSON shape
227
+ in [`AGENTS.md`](AGENTS.md#json-contracts-agents-can-parse).
228
+
229
+ ### 2. "I want a field-level diff before approving."
230
+
231
+ ```bash
232
+ dsk diff acme-lab.yaml
233
+ ```
234
+
235
+ Secrets are redacted at the renderer; raw values never leave the process.
236
+
237
+ ### 3. "I have records that already exist in Keeper. Adopt them."
238
+
239
+ ```bash
240
+ dsk import acme-lab.yaml --dry-run # preview adoptions
241
+ dsk import acme-lab.yaml --auto-approve
242
+ ```
243
+
244
+ Adoption only matches records with no existing ownership marker.
245
+
246
+ ### 4. "I want to lift an existing tenant into a manifest."
247
+
248
+ ```bash
249
+ dsk export project.json -o acme-lab.yaml
250
+ ```
251
+
252
+ `project.json` is a Commander-shaped PAM project export. The output is a
253
+ manifest you can edit, commit, and re-apply.
254
+
255
+ ### 5. "Run a CI gate that fails on conflict but allows clean changes."
256
+
257
+ ```bash
258
+ dsk plan acme-lab.yaml --json > plan.json
259
+ jq -e '.summary.conflict == 0' plan.json
260
+ ```
261
+
262
+ Or use the bundled [GitHub Action](.github/actions/dsk/README.md):
263
+
264
+ ```yaml
265
+ - uses: msawczynk/dsk/.github/actions/dsk@main
266
+ with:
267
+ manifest-path: manifests/acme-lab.yaml
268
+ command: plan
269
+ ```
270
+
271
+ ### 6. "Watch for drift continuously."
272
+
273
+ ```bash
274
+ DSK_PREVIEW=drift-watch dsk drift-watch manifests/*.yaml
275
+ ```
276
+
277
+ ### 7. "Generate a compliance evidence bundle."
278
+
279
+ ```bash
280
+ dsk bundle manifests/acme-lab.yaml -o evidence/
281
+ ```
282
+
283
+ ### 8. "Run a Keeper Commander report from DSK with redaction."
284
+
285
+ ```bash
286
+ dsk report password-report --quiet
287
+ dsk report compliance-report --node 12345
288
+ dsk report security-audit-report --record-details
289
+ ```
290
+
291
+ ### 9. "Expose DSK to keeper-migrate."
292
+
293
+ Hybrid Option 3 keeps standalone DSK intact and adds a shim layer that
294
+ `keeper-migrate` can discover:
295
+
296
+ ```bash
297
+ dsk shim-info
298
+ ```
299
+
300
+ Python embedders can use:
301
+
302
+ ```python
303
+ from dsk import shim
304
+
305
+ info = shim.shim_info()
306
+ ```
307
+
308
+ See [`docs/architecture/keeper-migrate-shim-design.md`](docs/architecture/keeper-migrate-shim-design.md).
309
+
310
+ ### 10. "Use it from Python, not the CLI."
311
+
312
+ ```python
313
+ from dsk.core import (
314
+ load_manifest, build_graph, build_plan, compute_diff,
315
+ )
316
+ from dsk.providers import MockProvider
317
+
318
+ manifest = load_manifest("acme-lab.yaml")
319
+ graph = build_graph(manifest)
320
+ provider = MockProvider()
321
+ plan = build_plan(manifest, graph, provider)
322
+ print(f"creates={plan.summary.create} updates={plan.summary.update}")
323
+ ```
324
+
325
+ More entry points (vault, MSP, KSM): see
326
+ [`docs/QUICK_START.md`](docs/QUICK_START.md#programmatic-load) and the
327
+ package overview in [`dsk/SCAFFOLD.md`](dsk/SCAFFOLD.md).
328
+
329
+ ---
330
+
331
+ ## CLI commands at a glance
332
+
333
+ | Command | Role |
334
+ |---------|------|
335
+ | `dsk validate PATH` | Schema, references, optional `--online` tenant checks |
336
+ | `dsk plan PATH` | Plan vs tenant; `--json` for machine-readable |
337
+ | `dsk diff PATH` | Field-level diff (redacted) |
338
+ | `dsk apply PATH` | Execute plan; `--dry-run`, `--auto-approve`, `--allow-delete` |
339
+ | `dsk import PATH` | Adopt unmarked live records |
340
+ | `dsk import-from-keepercmd RUN_DIR` | Import keeperCMD migration run-dir into DSK manifests |
341
+ | `dsk verify RUN_DIR` | Verify keeperCMD run-dir audit chain, sidecars, checksums, and contract version |
342
+ | `dsk export FILE.json` | Commander-shaped PAM JSON → manifest YAML |
343
+ | `dsk discover` | List unmanaged PAM resources |
344
+ | `dsk scan` | Surface unmanaged identities and configuration drift |
345
+ | `dsk drift-watch PATH...` | Drift daemon (preview-gated) |
346
+ | `dsk bundle` | Compliance evidence bundle |
347
+ | `dsk audit explain AUDIT_LOG` | Inspect keeperCMD audit-chain events and failures |
348
+ | `dsk rehearse-report RUN_DIR` | Emit keeperCMD rehearsal drift report / JUnit stub |
349
+ | `dsk report ...` | Password / compliance / security-audit / vault-health / KSM / team / role reports |
350
+ | `dsk spiffe-verify` | Verify SPIFFE JWT-SVID bindings |
351
+ | `dsk refusal` | Run refusal policy checks on manifests |
352
+ | `dsk panic-revoke` | Mark emergency revocation intent in plan inputs |
353
+ | `dsk live-smoke` | Run the committed live-tenant smoke harness |
354
+ | `dsk run ...` | Commander passthrough with redaction |
355
+ | `dsk bootstrap-ksm` | KSM bootstrap helper |
356
+ | `dsk doctor` | Environment / dependency snapshot |
357
+ | `dsk orient` | Short orientation for agents |
358
+ | `dsk mcp serve` | MCP (Model Context Protocol) server |
359
+ | `dsk webui` | Browser-based front-end (Keeper-inspired, dark-mode toggle, streaming + cancel) |
360
+
361
+ `dsk rehearse-report` currently has a text-mode stub while D1 fixture work is
362
+ pending; `--format junit` emits the CI-consumable rehearsal status XML.
363
+
364
+ Every command supports `--help`. JSON shapes and exit-code contracts:
365
+ [`AGENTS.md`](AGENTS.md).
366
+
367
+ ---
368
+
369
+ ## What can DSK manage?
370
+
371
+ The manifest catalog splits into two tiers. **Tier 1** families are backed by a live Keeper API today — `validate`, `plan`, and `apply` all work against a real tenant (live-smoke evidence cited per row). **Tier 2** families have a real schema and useful `validate` + `plan` output, but `apply` exits with a typed `CapabilityError` because the Keeper API doesn't exist yet, or because the family targets an external system (Slack, ITSM, SIEM, CI, OPA). Nothing silently drops; both tiers are honest about their limits.
372
+
373
+ > **Not an official Keeper Security product.** DSK is a community tool. It is not endorsed by, affiliated with, or supported by Keeper Security, Inc. For official Keeper tooling see the [Keeper Terraform provider](https://registry.terraform.io/providers/Keeper-Security/keeper/latest) and [Keeper Commander](https://github.com/Keeper-Security/Commander).
374
+
375
+ ### Tier 1 — Keeper-API-backed (live-proven)
376
+
377
+ | Family | Live-smoke evidence | Status |
378
+ |---|---|---|
379
+ | `pam-environment.v1` | E2E green (28 Apr 2026) — pamMachine, pamDatabase, pamDirectory, pamRemoteBrowser | supported |
380
+ | `keeper-vault.v1` | vault login record create→verify→destroy (28 Apr 2026) | supported |
381
+ | `keeper-vault-sharing.v1` | shared folder create + membership grant (30 Apr 2026) | supported |
382
+ | `keeper-ksm.v1` | KSM bootstrap + app create + KsmLoginHelper (28 Apr 2026) | supported (app lifecycle preview-gated) |
383
+ | `msp-environment.v1` | MC add/update/remove via Commander (1 May 2026) | supported |
384
+ | `keeper-epm.v1` | EPM policy add/verify/delete on lab tenant (1 May 2026) | supported (watchlists/approvers upstream-gap) |
385
+ | `keeper-workflow.v1` | workflow create/verify/delete on lab tenant (1 May 2026) | preview-gated → supported in progress |
386
+ | `jit-access.v1` | pam project import jit_settings path (Commander 17.2.7+) | supported plan+apply; readback upstream-gap |
387
+ | `rotation-policy.v1` | PAMCreateRecordRotationCommand path (Commander 18.0.0) | supported apply; readback upstream-gap |
388
+ | `keeper-enterprise.v1` | offline foundation — nodes/users/roles/teams/enforcements | preview-gated (online apply pending) |
389
+ | `keeper-pam-extended.v1` | offline foundation — gateway configs/rotation schedules/discovery rules | preview-gated |
390
+ | `keeper-integrations-identity.v1` | offline foundation — domains/SCIM/SSO/outbound email | preview-gated / upstream-gap |
391
+ | `keeper-integrations-events.v1` | offline foundation — automator rules/audit alerts/API keys | preview-gated / upstream-gap |
392
+
393
+ ### Tier 2 — Forward-spec / delivery-only (validate + plan only; apply refused)
394
+
395
+ `apply` exits with `CapabilityError` — the schema is real and produces useful plan output, but the Keeper API or target system write path does not exist yet.
396
+
397
+ | Family | Why apply is refused | Delivery target |
398
+ |---|---|---|
399
+ | `ai-act-profile.v1` | No Keeper AI-Act API | spec / OPA gate output |
400
+ | `dora-profile.v1` | No Keeper DORA API | spec / OPA gate output |
401
+ | `cmmc-profile.v1` | No Keeper CMMC API | spec / OPA gate output |
402
+ | `pqc-policy.v1` | No Keeper PQC API | spec |
403
+ | `spiffe-binding.v1` | No Keeper SPIFFE API | spec / OPA |
404
+ | `nhi-agent.v1` | Keeper NHI PAM API not GA | spec |
405
+ | `ai-token.v1` | No Keeper AI-token API | spec / external IDP |
406
+ | `ai-agent-trust-chain.v1` | No Keeper agent-trust API | spec |
407
+ | `keeper-ai-policy.v1` | No Keeper AI-policy API | spec |
408
+ | `agentic-skill-policy.v1` | No Keeper skill-policy API | spec / external |
409
+ | `agent-memory-policy.v1` | No Keeper memory-policy API | spec / external |
410
+ | `mcp-server-allowlist.v1` | No Keeper MCP-allowlist API | spec / OPA |
411
+ | `mcp-secrets-binding.v1` | No Keeper MCP-binding API | spec |
412
+ | `compliance-bundle.v1` | Aggregator over compliance specs above | spec |
413
+ | `continuous-evidence-stream.v1` | External SIEM, no Keeper API | k8s / SIEM REST |
414
+ | `cspm-remediation.v1` | External CSPM | external |
415
+ | `pipeline-ephemeral-environment.v1` | External CI | external |
416
+ | `cloud-jit.v1` | No multi-cloud JIT writer in Commander | preview-gated |
417
+ | `workflow-gate.v1` / `slack-approval-gate.v1` / `itsm-approval-gate.v1` | External Slack / ITSM | external REST |
418
+ | `secret-scanner-bridge.v1` | External scanner (GHAS → PAM rotation bridge) | external |
419
+ | `pam-connection-profile.v1` | Commander post-import mutation gap | preview-gated / upstream-gap |
420
+ | `db-access-policy.v1` | KeeperDB session policy live proof pending | preview-gated |
421
+ | `gateway-ha.v1` | No Commander HA gateway writer | preview-gated |
422
+ | `keeper-scim.v1` | Enterprise SCIM apply upstream-gap | preview-gated / upstream-gap |
423
+
424
+ ---
425
+
426
+ ## Providers
427
+
428
+ | Provider | Use |
429
+ |----------|-----|
430
+ | `mock` | Offline graph, deterministic UIDs, no network. Use this in CI. |
431
+ | `commander` | Live Keeper via the `keepercommander` Python package (pinned in `pyproject.toml`). |
432
+
433
+ Login helpers, KSM bootstrap, and custom auth: [`docs/LOGIN.md`](docs/LOGIN.md).
434
+
435
+ ---
436
+
437
+ ## Testing
438
+
439
+ - **In-repo (always current):** start with [`docs/QUICK_START.md`](docs/QUICK_START.md) and the **examples index** [`docs/EXAMPLES.md`](docs/EXAMPLES.md). Full doc set: [`docs/index.md`](docs/index.md) (also built as a [MkDocs](https://www.mkdocs.org/) site from this tree).
440
+
441
+ DSK ships with **3,500+ unit and integration tests** that exercise every
442
+ manifest family, every CLI subcommand, the mock provider, the Commander
443
+ provider's stubbed surfaces, and the JSON-output contracts. The test
444
+ suite is the binding contract — if a feature isn't covered by a test,
445
+ treat it as preview.
446
+
447
+ Run the full suite:
448
+
449
+ ```bash
450
+ pip install -e ".[dev]"
451
+ pytest # full suite (~30s)
452
+ pytest --cov=dsk # with coverage
453
+ ruff check . && ruff format --check .
454
+ mypy dsk
455
+ ```
456
+
457
+ The committed entry point for local merge gates is
458
+ [`scripts/phase_harness/run_local_gates.sh`](scripts/phase_harness/run_local_gates.sh).
459
+ CI runs the same gates plus an examples-validation matrix on every PR
460
+ (see [`.github/workflows/ci.yml`](.github/workflows/ci.yml)).
461
+
462
+ For live-tenant smoke runs against a real Keeper tenant, the
463
+ committed harness is [`scripts/smoke/`](scripts/smoke/) and the
464
+ runbook is [`docs/LIVE_TEST_RUNBOOK.md`](docs/LIVE_TEST_RUNBOOK.md).
465
+
466
+ ---
467
+
468
+ ## Documentation map
469
+
470
+ | You want to... | Read |
471
+ |----------------|------|
472
+ | Install and verify | [`docs/INSTALLATION.md`](docs/INSTALLATION.md) |
473
+ | Five-minute walkthrough | [`docs/QUICK_START.md`](docs/QUICK_START.md) |
474
+ | Login and providers | [`docs/LOGIN.md`](docs/LOGIN.md) |
475
+ | Exit codes and validation stages | [`docs/VALIDATION_STAGES.md`](docs/VALIDATION_STAGES.md) |
476
+ | Honest capability matrix | [`docs/SDK_DA_COMPLETION_PLAN.md`](docs/SDK_DA_COMPLETION_PLAN.md) |
477
+ | Commander coverage and pin | [`docs/COMMANDER.md`](docs/COMMANDER.md) |
478
+ | GitHub Actions integration | [`docs/GITHUB_ACTIONS.md`](docs/GITHUB_ACTIONS.md) |
479
+ | Terraform side-by-side | [`docs/TERRAFORM_INTEGRATION.md`](docs/TERRAFORM_INTEGRATION.md) |
480
+ | Pulumi / Crossplane / k8s | [`pulumi/`](pulumi/), [`crossplane/`](crossplane/), [`kubernetes/`](kubernetes/) |
481
+ | Backstage plugin | [`backstage-plugin-dsk/`](backstage-plugin-dsk/) |
482
+ | Web UI (browser front-end, dark mode) | [`webui/`](webui/) |
483
+ | Agent / LLM contract | [`AGENTS.md`](AGENTS.md) |
484
+ | Library API and semver contract | [`LIBRARY_API.md`](LIBRARY_API.md), [`SEMVER.md`](SEMVER.md) |
485
+ | Glossary and naming conventions | [`docs/glossary.md`](docs/glossary.md) |
486
+ | ADR index | [`docs/adr/README.md`](docs/adr/README.md) |
487
+ | Threat model | [`docs/security/threat-model.md`](docs/security/threat-model.md) |
488
+ | Compliance control mapping | [`docs/compliance/control-mapping.md`](docs/compliance/control-mapping.md) |
489
+ | Changelog | [`CHANGELOG.md`](CHANGELOG.md) |
490
+ | Keeper engineer onboarding | [`docs/onboarding-for-keeper-engineers.md`](docs/onboarding-for-keeper-engineers.md) |
491
+ | keeperCMD run-dir tutorials | [`examples/01-verify-existing-rundir/`](examples/01-verify-existing-rundir/), [`examples/02-import-from-keepercmd/`](examples/02-import-from-keepercmd/), [`examples/03-rehearse-vs-apply/`](examples/03-rehearse-vs-apply/) |
492
+ | Raw keeperCMD migration guide | [`docs/migration-from-raw-keepercmd.md`](docs/migration-from-raw-keepercmd.md) |
493
+ | Wave 2 promotion safety | [`docs/wave2-promotion-runbook.md`](docs/wave2-promotion-runbook.md) |
494
+ | OUTPUT_CONTRACT v1.2 absorption | [`docs/output-contract-v1.2-absorption-runbook.md`](docs/output-contract-v1.2-absorption-runbook.md) |
495
+ | Per-folder scaffold (where to land work) | [`SCAFFOLD.md`](SCAFFOLD.md) |
496
+ | Reconciliation against design + checklists | [`RECONCILIATION.md`](RECONCILIATION.md) |
497
+ | Roadmap | [`docs/DSK_NEXT_WORK.md`](docs/DSK_NEXT_WORK.md) |
498
+
499
+ ## Security & supply chain
500
+
501
+ Release builds publish a CycloneDX JSON SBOM as a GitHub Release artifact
502
+ (`sbom.json`). Generate the same file locally with:
503
+
504
+ ```bash
505
+ pip install -e ".[dev]"
506
+ make sbom
507
+ ```
508
+
509
+ Release artifact link pattern:
510
+ `https://github.com/msawczynk/dsk/releases/download/<tag>/sbom.json`
511
+
512
+ ---
513
+
514
+ ## Contributing
515
+
516
+ DSK is autonomous-agent friendly: every change should be reproducible by
517
+ running the local gates above. The agent operating manual is
518
+ [`AGENTS.md`](AGENTS.md). Contribution guidance is in
519
+ [`CONTRIBUTING.md`](CONTRIBUTING.md). Issues and PRs welcome at
520
+ [`msawczynk/dsk`](https://github.com/msawczynk/dsk).
521
+
522
+ ---
523
+
524
+ ## License
525
+
526
+ MIT — see [`LICENSE`](LICENSE).