runbooks 0.7.0__py3-none-any.whl → 0.7.6__py3-none-any.whl

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 (132) hide show
  1. runbooks/__init__.py +87 -37
  2. runbooks/cfat/README.md +300 -49
  3. runbooks/cfat/__init__.py +2 -2
  4. runbooks/finops/__init__.py +1 -1
  5. runbooks/finops/cli.py +1 -1
  6. runbooks/inventory/collectors/__init__.py +8 -0
  7. runbooks/inventory/collectors/aws_management.py +791 -0
  8. runbooks/inventory/collectors/aws_networking.py +3 -3
  9. runbooks/main.py +3389 -782
  10. runbooks/operate/__init__.py +207 -0
  11. runbooks/operate/base.py +311 -0
  12. runbooks/operate/cloudformation_operations.py +619 -0
  13. runbooks/operate/cloudwatch_operations.py +496 -0
  14. runbooks/operate/dynamodb_operations.py +812 -0
  15. runbooks/operate/ec2_operations.py +926 -0
  16. runbooks/operate/iam_operations.py +569 -0
  17. runbooks/operate/s3_operations.py +1211 -0
  18. runbooks/operate/tagging_operations.py +655 -0
  19. runbooks/remediation/CLAUDE.md +100 -0
  20. runbooks/remediation/DOME9.md +218 -0
  21. runbooks/remediation/README.md +26 -0
  22. runbooks/remediation/Tests/__init__.py +0 -0
  23. runbooks/remediation/Tests/update_policy.py +74 -0
  24. runbooks/remediation/__init__.py +95 -0
  25. runbooks/remediation/acm_cert_expired_unused.py +98 -0
  26. runbooks/remediation/acm_remediation.py +875 -0
  27. runbooks/remediation/api_gateway_list.py +167 -0
  28. runbooks/remediation/base.py +643 -0
  29. runbooks/remediation/cloudtrail_remediation.py +908 -0
  30. runbooks/remediation/cloudtrail_s3_modifications.py +296 -0
  31. runbooks/remediation/cognito_active_users.py +78 -0
  32. runbooks/remediation/cognito_remediation.py +856 -0
  33. runbooks/remediation/cognito_user_password_reset.py +163 -0
  34. runbooks/remediation/commons.py +455 -0
  35. runbooks/remediation/dynamodb_optimize.py +155 -0
  36. runbooks/remediation/dynamodb_remediation.py +744 -0
  37. runbooks/remediation/dynamodb_server_side_encryption.py +108 -0
  38. runbooks/remediation/ec2_public_ips.py +134 -0
  39. runbooks/remediation/ec2_remediation.py +892 -0
  40. runbooks/remediation/ec2_subnet_disable_auto_ip_assignment.py +72 -0
  41. runbooks/remediation/ec2_unattached_ebs_volumes.py +448 -0
  42. runbooks/remediation/ec2_unused_security_groups.py +202 -0
  43. runbooks/remediation/kms_enable_key_rotation.py +651 -0
  44. runbooks/remediation/kms_remediation.py +717 -0
  45. runbooks/remediation/lambda_list.py +243 -0
  46. runbooks/remediation/lambda_remediation.py +971 -0
  47. runbooks/remediation/multi_account.py +569 -0
  48. runbooks/remediation/rds_instance_list.py +199 -0
  49. runbooks/remediation/rds_remediation.py +873 -0
  50. runbooks/remediation/rds_snapshot_list.py +192 -0
  51. runbooks/remediation/requirements.txt +118 -0
  52. runbooks/remediation/s3_block_public_access.py +159 -0
  53. runbooks/remediation/s3_bucket_public_access.py +143 -0
  54. runbooks/remediation/s3_disable_static_website_hosting.py +74 -0
  55. runbooks/remediation/s3_downloader.py +215 -0
  56. runbooks/remediation/s3_enable_access_logging.py +562 -0
  57. runbooks/remediation/s3_encryption.py +526 -0
  58. runbooks/remediation/s3_force_ssl_secure_policy.py +143 -0
  59. runbooks/remediation/s3_list.py +141 -0
  60. runbooks/remediation/s3_object_search.py +201 -0
  61. runbooks/remediation/s3_remediation.py +816 -0
  62. runbooks/remediation/scan_for_phrase.py +425 -0
  63. runbooks/remediation/workspaces_list.py +220 -0
  64. runbooks/security/__init__.py +9 -10
  65. runbooks/security/security_baseline_tester.py +4 -2
  66. runbooks-0.7.6.dist-info/METADATA +608 -0
  67. {runbooks-0.7.0.dist-info → runbooks-0.7.6.dist-info}/RECORD +84 -76
  68. {runbooks-0.7.0.dist-info → runbooks-0.7.6.dist-info}/entry_points.txt +0 -1
  69. {runbooks-0.7.0.dist-info → runbooks-0.7.6.dist-info}/top_level.txt +0 -1
  70. jupyter-agent/.env +0 -2
  71. jupyter-agent/.env.template +0 -2
  72. jupyter-agent/.gitattributes +0 -35
  73. jupyter-agent/.gradio/certificate.pem +0 -31
  74. jupyter-agent/README.md +0 -16
  75. jupyter-agent/__main__.log +0 -8
  76. jupyter-agent/app.py +0 -256
  77. jupyter-agent/cloudops-agent.png +0 -0
  78. jupyter-agent/ds-system-prompt.txt +0 -154
  79. jupyter-agent/jupyter-agent.png +0 -0
  80. jupyter-agent/llama3_template.jinja +0 -123
  81. jupyter-agent/requirements.txt +0 -9
  82. jupyter-agent/tmp/4ojbs8a02ir/jupyter-agent.ipynb +0 -68
  83. jupyter-agent/tmp/cm5iasgpm3p/jupyter-agent.ipynb +0 -91
  84. jupyter-agent/tmp/crqbsseag5/jupyter-agent.ipynb +0 -91
  85. jupyter-agent/tmp/hohanq1u097/jupyter-agent.ipynb +0 -57
  86. jupyter-agent/tmp/jns1sam29wm/jupyter-agent.ipynb +0 -53
  87. jupyter-agent/tmp/jupyter-agent.ipynb +0 -27
  88. jupyter-agent/utils.py +0 -409
  89. runbooks/aws/__init__.py +0 -58
  90. runbooks/aws/dynamodb_operations.py +0 -231
  91. runbooks/aws/ec2_copy_image_cross-region.py +0 -195
  92. runbooks/aws/ec2_describe_instances.py +0 -202
  93. runbooks/aws/ec2_ebs_snapshots_delete.py +0 -186
  94. runbooks/aws/ec2_run_instances.py +0 -213
  95. runbooks/aws/ec2_start_stop_instances.py +0 -212
  96. runbooks/aws/ec2_terminate_instances.py +0 -143
  97. runbooks/aws/ec2_unused_eips.py +0 -196
  98. runbooks/aws/ec2_unused_volumes.py +0 -188
  99. runbooks/aws/s3_create_bucket.py +0 -142
  100. runbooks/aws/s3_list_buckets.py +0 -152
  101. runbooks/aws/s3_list_objects.py +0 -156
  102. runbooks/aws/s3_object_operations.py +0 -183
  103. runbooks/aws/tagging_lambda_handler.py +0 -183
  104. runbooks/inventory/FAILED_SCRIPTS_TROUBLESHOOTING.md +0 -619
  105. runbooks/inventory/PASSED_SCRIPTS_GUIDE.md +0 -738
  106. runbooks/inventory/aws_organization.png +0 -0
  107. runbooks/inventory/cfn_move_stack_instances.py +0 -1526
  108. runbooks/inventory/delete_s3_buckets_objects.py +0 -169
  109. runbooks/inventory/lockdown_cfn_stackset_role.py +0 -224
  110. runbooks/inventory/update_aws_actions.py +0 -173
  111. runbooks/inventory/update_cfn_stacksets.py +0 -1215
  112. runbooks/inventory/update_cloudwatch_logs_retention_policy.py +0 -294
  113. runbooks/inventory/update_iam_roles_cross_accounts.py +0 -478
  114. runbooks/inventory/update_s3_public_access_block.py +0 -539
  115. runbooks/organizations/__init__.py +0 -12
  116. runbooks/organizations/manager.py +0 -374
  117. runbooks-0.7.0.dist-info/METADATA +0 -375
  118. /runbooks/inventory/{tests → Tests}/common_test_data.py +0 -0
  119. /runbooks/inventory/{tests → Tests}/common_test_functions.py +0 -0
  120. /runbooks/inventory/{tests → Tests}/script_test_data.py +0 -0
  121. /runbooks/inventory/{tests → Tests}/setup.py +0 -0
  122. /runbooks/inventory/{tests → Tests}/src.py +0 -0
  123. /runbooks/inventory/{tests/test_inventory_modules.py → Tests/test_Inventory_Modules.py} +0 -0
  124. /runbooks/inventory/{tests → Tests}/test_cfn_describe_stacks.py +0 -0
  125. /runbooks/inventory/{tests → Tests}/test_ec2_describe_instances.py +0 -0
  126. /runbooks/inventory/{tests → Tests}/test_lambda_list_functions.py +0 -0
  127. /runbooks/inventory/{tests → Tests}/test_moto_integration_example.py +0 -0
  128. /runbooks/inventory/{tests → Tests}/test_org_list_accounts.py +0 -0
  129. /runbooks/inventory/{Inventory_Modules.py → inventory_modules.py} +0 -0
  130. /runbooks/{aws → operate}/tags.json +0 -0
  131. {runbooks-0.7.0.dist-info → runbooks-0.7.6.dist-info}/WHEEL +0 -0
  132. {runbooks-0.7.0.dist-info → runbooks-0.7.6.dist-info}/licenses/LICENSE +0 -0
@@ -1,46 +1,11 @@
1
1
  conftest.py,sha256=HTnQMw9wxefkvX5q4yG8EUH2qVLJBnC9QCt3UCltw7I,586
2
- jupyter-agent/.env,sha256=ZyIap7kKkg5_JwRCJqtoDpixqPkHU3Y2cJxYadKlO-c,103
3
- jupyter-agent/.env.template,sha256=xU2MQ80zvx2mYr_n3alar7oop9mdhonU6xNVEQGlzwY,71
4
- jupyter-agent/.gitattributes,sha256=Ea1--iSXXuSww8OjjtGHN_Blil91oKlnh7V2p4oCM2E,1519
5
- jupyter-agent/README.md,sha256=WJ7zUhaFaDl26cH6mcWimqkpN04TJhIH4TKiyd6MDI0,370
6
- jupyter-agent/__main__.log,sha256=TDRITkba40x0Lby7EkWncbIs4i8g1sztDD_heSj62aI,710
7
- jupyter-agent/app.py,sha256=8UR8AzqrJYHWr2bpj-mOSuPHLYzd8AWVJbxnM43h5Q8,8727
8
- jupyter-agent/cloudops-agent.png,sha256=A4e0WfpihWVHFtz0Yj09Y9uci-IWF4gdpnZifACzdT8,408376
9
- jupyter-agent/ds-system-prompt.txt,sha256=YZydzHqxaHgXVPORiltlWDg3rK-c-a2Dlx0BAj2dfsg,5034
10
- jupyter-agent/jupyter-agent.png,sha256=KJjLvoWAnuhSaEsWBW8PHwouzk2sVC84PTtSuMDEg3o,438042
11
- jupyter-agent/llama3_template.jinja,sha256=gywY7mJ14M-VeCSs0LLFO-Nt3S7XEJaQQ-KuzorzuEs,5198
12
- jupyter-agent/requirements.txt,sha256=OrwjCjWcVo8lp82yY6Sor2r46mxhqMfkFiH6PBphtA0,173
13
- jupyter-agent/utils.py,sha256=MGsDPI6a2OYc39wwSeg8oAM69U_k8mMSzegwT1cyp_0,13067
14
- jupyter-agent/.gradio/certificate.pem,sha256=IrVXonBVszYGtlWfN3A5KNPkrXnxELQH0EmG4YQ1Q9E,1939
15
- jupyter-agent/tmp/jupyter-agent.ipynb,sha256=jrqDAZIRUDqcCLyrV_Jb435WIipb7OB5FjxULP0mynI,612
16
- jupyter-agent/tmp/4ojbs8a02ir/jupyter-agent.ipynb,sha256=hDZB4yLCsQcTMXMNZhNCVAmuXugTXJlXlDu-5BnNZDM,70481
17
- jupyter-agent/tmp/cm5iasgpm3p/jupyter-agent.ipynb,sha256=KQ8slJljjsUjsE-COrh-jZFoaEg5jwP6ukk6VX6-C0I,89492
18
- jupyter-agent/tmp/crqbsseag5/jupyter-agent.ipynb,sha256=XUM3BR1BJ8qp37rKDft-f9rXCGiG6V7_WOoF6TbBUNw,110860
19
- jupyter-agent/tmp/hohanq1u097/jupyter-agent.ipynb,sha256=tPE_Uwx8ZQscqVaM0gfnSgsxNc9RkrcisJKICW1ah38,9686
20
- jupyter-agent/tmp/jns1sam29wm/jupyter-agent.ipynb,sha256=7tibJV-03sU3Xn4oRjt6E2QOQIt57E0xxY0hcoNctqg,75815
21
- runbooks/__init__.py,sha256=xMbh_48pNLycHeUL4D5iDqjjVEz2Gnwr1j9dcMP7Kjs,2021
2
+ runbooks/__init__.py,sha256=v10iKXkuZf8wdK5VgNSnVyR4uwNjKHInhbNRHK0YvS0,4600
22
3
  runbooks/__main__.py,sha256=0hTPUA9KkLm_H_COqaIpNzXvC4Lv5b_XYYBV6fUFDrM,241
23
4
  runbooks/base.py,sha256=SE31vwKB_CW2C0w2Onb7QfjU2xJXcUbiYTSHBDWT7KE,11593
24
5
  runbooks/config.py,sha256=63Bct1jASQG3mjPTNnzfJwTMgXzG8aQqVsaku6ugZR0,7839
25
- runbooks/main.py,sha256=1WTBaNcpLCyA__mE37VmE0CSnH2vDs168HY3cZaihHM,37290
26
- runbooks/aws/__init__.py,sha256=iswGPspnFaHLE_Zzw2uRraYI2zvJ1Nma5PbdOiBUdEo,1646
27
- runbooks/aws/dynamodb_operations.py,sha256=c91YACBHnOELL8Ufj7tRQws9azGqnB6flQsacTi57xQ,6490
28
- runbooks/aws/ec2_copy_image_cross-region.py,sha256=2Afoo2ddzswgtdhdzsDq5aZiqXkQ0_kUyRdHbhkaLAA,6017
29
- runbooks/aws/ec2_describe_instances.py,sha256=0S9iY-J_dSOeve0HyeuVu4s01oCgPjdz3DYHhnJo-9w,6545
30
- runbooks/aws/ec2_ebs_snapshots_delete.py,sha256=LwaGGAg_7tdqic1thBLywlHKjMSMyye2B79d4yNtK78,5886
31
- runbooks/aws/ec2_run_instances.py,sha256=ZpqGXN2yeXz7jYwsL7EZrQsfaYxzRoH5UIrDeksmPRI,6885
32
- runbooks/aws/ec2_start_stop_instances.py,sha256=M4adf7DZI176aWfb7oeT_pYjrs-IbZ9moGoVkIco7Fw,6035
33
- runbooks/aws/ec2_terminate_instances.py,sha256=p8ZHHDkT--rlOFah82hG6SJpty4rYZa4hn3yq4MqvQI,4692
34
- runbooks/aws/ec2_unused_eips.py,sha256=04pjoeSwm-CfJKT6u9XuHa_D-iK5r9D65FaisQy00Zk,5535
35
- runbooks/aws/ec2_unused_volumes.py,sha256=ZnLr-LHVHoznmij8r2RtZ5Y3W7bBAklophnJKQmN6lg,5733
36
- runbooks/aws/s3_create_bucket.py,sha256=UhQML3KWflvvKmEZFod4tYPzIukCGRJdmBXSfB3ne7w,4216
37
- runbooks/aws/s3_list_buckets.py,sha256=sHh05_KrvpLzOlGZJy8nxTAfTuMaVtMIhb3A9nLh_rQ,4752
38
- runbooks/aws/s3_list_objects.py,sha256=idwrfbjqEwF5sHFSJRhNb6X38P3tTscCwv0IwKm0NuA,4634
39
- runbooks/aws/s3_object_operations.py,sha256=46l8v0Xt8pJhTuMjCyLDSLsU06WGxWKad99nQ91o2hg,5400
40
- runbooks/aws/tagging_lambda_handler.py,sha256=NZwzlI3NwEKsLk3b-a_rq3EjMLQ9hUKWi_pzhomvWws,5433
41
- runbooks/aws/tags.json,sha256=-Y77SDvrvn0sCdsxgdRwu0sl0mih2Ib_N6nGi-UtE5U,513
42
- runbooks/cfat/README.md,sha256=ovKuVTxIJWqRmkTK1JGTNkG25Sufe918wYAFA86_SS8,4917
43
- runbooks/cfat/__init__.py,sha256=4CAtXB-hUUgkZnp_QefbADpMAcTlXI-zDGyHgBlprAI,1876
6
+ runbooks/main.py,sha256=YOG-bPNiDYtL4XCZozGEkjyVP61GPwCZ1IbMq8mLlY4,148252
7
+ runbooks/cfat/README.md,sha256=rP_FNuKB8xKfj89dPKf43_s_-ScqrmlQ_ZPXj6h0pfo,11089
8
+ runbooks/cfat/__init__.py,sha256=aAiIi6bCx0G3QbZfc5jxLDNpCixnl78eyIi9awCCKPI,1922
44
9
  runbooks/cfat/app.ts,sha256=EwpA9bQzkoH1qqTJ_Tco47PwVG2zTv4g8ZmEGYpWYlU,27785
45
10
  runbooks/cfat/cli.py,sha256=37KUY-ObzMcB7xYs2R8Q40djLFnBgLhBnUXujvn2M7s,3483
46
11
  runbooks/cfat/models.py,sha256=gh-7XmqEH9PvqrmxtmIhWoKGpGcFTWr1pah_9iNrLxM,37960
@@ -103,9 +68,9 @@ runbooks/cfat/tests/test_integration.py,sha256=L4kkWW41Jsuzn4Tv-z_a5cY6xOo_aHzCA
103
68
  runbooks/cfat/tests/test_models.py,sha256=16Dcdty82_yotJ2ngBbgydCy9BDamxtMZrs4a1t-mVM,18267
104
69
  runbooks/cfat/tests/test_reporting.py,sha256=ysPZSAFgCQ7oIkOdBxUrlCiyZBhWDpcnp0I2cv3k9_Q,12631
105
70
  runbooks/finops/README.md,sha256=Fm9dpPujttPLJ2ES2d_zDUZ-YrVqVkeaAM1gjlcQxCw,12983
106
- runbooks/finops/__init__.py,sha256=5E15yPJgtCLquIx3_H20BiR0_5fmC4BOW2Zti_7fRF0,2265
71
+ runbooks/finops/__init__.py,sha256=X5nVDeHNHIV2_9NrGQHulepYKh_V5r5jBj46R_Gc8dg,2265
107
72
  runbooks/finops/aws_client.py,sha256=o9ShoAH_V1QKBlq2Li4VTrjnXNj3ezgGvenJAiPUbjY,9379
108
- runbooks/finops/cli.py,sha256=HqU0CPhVrqD0WSxckpeHYRnJWZTAIqOygjfnflNZaoE,5227
73
+ runbooks/finops/cli.py,sha256=c0FJDJULhmpNdteAlHoxrwtxalNxkNM4dKVyJXpwlPg,5227
109
74
  runbooks/finops/cost_processor.py,sha256=BNyG9HpkAI27UFcoRurP3Tz1Q4BV9u_fVk6wVzf0ysU,15042
110
75
  runbooks/finops/dashboard_runner.py,sha256=JDNx-MqmDuGEZXPhRTDaxlAcjzmvMpjXhOEwIkj8n2A,18281
111
76
  runbooks/finops/helpers.py,sha256=TlFXLZ7oJViYlKWk7MpbWDVlG71jM8C61dM8r5yjNMw,12805
@@ -115,21 +80,15 @@ runbooks/finops/types.py,sha256=Tk7sMVh-9LXxrU6IKDa6RMlxK7H3HkWUKvs1yctD_yQ,1592
115
80
  runbooks/finops/visualisations.py,sha256=BI6cBsKSNUcjqnEukMzHxZzqyv12w3TRj2zvN53-Rbk,2737
116
81
  runbooks/inventory/.gitignore,sha256=qqVQodfb6iNuPRM7fsl7lvqxrJaatKNQqQmX7s1_PPg,5563
117
82
  runbooks/inventory/ArgumentsClass.py,sha256=BwquO-iYZNS_fVxgASrksanzoAN_NPCzRpTAyohRLX0,8621
118
- runbooks/inventory/FAILED_SCRIPTS_TROUBLESHOOTING.md,sha256=xScVwmUGWDZySl2-5j43Dkga5ofk3UJvVqB9P6RklSw,20715
119
- runbooks/inventory/Inventory_Modules.py,sha256=4bBfezmCtsT-r0YU7Rhfv94rxhfPfStrUkPF4q009uI,285209
120
- runbooks/inventory/PASSED_SCRIPTS_GUIDE.md,sha256=zKUvINX2Pe_EbtJjNBo6MSMnMdJBEMqhrQR_mCbFxAY,21621
121
83
  runbooks/inventory/README.md,sha256=gCubMJ8mp09hwPccr2GDbUgiFr8CoCsakp1kHHAApTU,43221
122
84
  runbooks/inventory/__init__.py,sha256=J-MoV_B5ScwlqfLEZv7ZRF7iTai5Hsya0c4tiNrrVE4,2039
123
85
  runbooks/inventory/account_class.py,sha256=wvYNeiXHq6tk8Pqa95Aa91zAtuBXcnE51NonzDueuaM,26361
124
86
  runbooks/inventory/all_my_instances_wrapper.py,sha256=B_nHnXOFle6_LU1YnZd38uMZNV6pIONh4EvCyO-lwzw,5723
125
87
  runbooks/inventory/aws_decorators.py,sha256=_3QWqih_J6tgs7_dnJwp7Al7OI0qImZpFMyO4E-bMZE,8605
126
- runbooks/inventory/aws_organization.png,sha256=-LUsSMk9L-sPF6K3Z__FOnHIP7u4nQW9Q1rcTw1EzX8,1140649
127
- runbooks/inventory/cfn_move_stack_instances.py,sha256=cwyOdgQCcrfQqQjPDlTZStEUUN8jp691Mwggniyx-NM,73797
128
88
  runbooks/inventory/check_cloudtrail_compliance.py,sha256=rQGKuJefqBa1LCfTsVgKJ_GiP3HKqgpYX77iclOV2ko,33652
129
89
  runbooks/inventory/check_controltower_readiness.py,sha256=2elNsYY_PYhcQeyjcnB4NTbZVUrHnXU70OjrzwOpwVI,56076
130
90
  runbooks/inventory/check_landingzone_readiness.py,sha256=K7UayaO7QRIhNa0ewZk-Ks4iRAjUPVgMFfjkbgHVOYw,35934
131
91
  runbooks/inventory/cloudtrail.md,sha256=wMgU8ki4fWjoiO9SdDGxRADtdVUVEmD6KD4tjyFtLQk,21929
132
- runbooks/inventory/delete_s3_buckets_objects.py,sha256=o7nQQRdOXa3oW0Kfd-f1RwuLA7O5aLhg5gium3djjC0,6007
133
92
  runbooks/inventory/discovery.md,sha256=cKfHx4EFMLnH3R0VIaQ3_ygx9rvAA96tC2mWqQNxowA,6079
134
93
  runbooks/inventory/draw_org_structure.py,sha256=gMrXIs0FQkUCPgTRbTRwgTqLWBNzbcHZ6FFQ5L9hy0k,29769
135
94
  runbooks/inventory/ec2_vpc_utils.py,sha256=bQWvEhe6hqxfj-hgpwu_ZZ9YJbfKiEbgJcAFWhwih-M,16627
@@ -140,6 +99,7 @@ runbooks/inventory/find_ec2_security_groups.py,sha256=f-I5Xp4e3A36za4sKEwYm_Wkle
140
99
  runbooks/inventory/find_landingzone_versions.py,sha256=4oYfgmH4fJ40F3YuQKAhCcBuLHRgie4fTLCftPaQXhE,10277
141
100
  runbooks/inventory/find_vpc_flow_logs.py,sha256=BRwjqb4BD0K97uv8cabpn5nN1iL0DmVkClmX01hAfoA,65119
142
101
  runbooks/inventory/inventory.sh,sha256=WXmBEpi9OpTu24US9LhW5PC-z6jSwTN0jdwlt-p3aok,23939
102
+ runbooks/inventory/inventory_modules.py,sha256=4bBfezmCtsT-r0YU7Rhfv94rxhfPfStrUkPF4q009uI,285209
143
103
  runbooks/inventory/list_cfn_stacks.py,sha256=Drgi_7RUaIZA-Z4L-eMEvmmT6nqlj-oGvwBOGOmRKlw,22399
144
104
  runbooks/inventory/list_cfn_stackset_operation_results.py,sha256=1kjuv5uL-ioIWa7Dkx45XAEw3aFRClFTG8Qx1r44pSQ,12847
145
105
  runbooks/inventory/list_cfn_stackset_operations.py,sha256=lYsrZ44xiHkmjKdDQLaVzm7zcabGG91N-7EWtzmWcVU,38317
@@ -166,20 +126,26 @@ runbooks/inventory/list_sns_topics.py,sha256=qn1YlsZtpZSdC7lbFudBZCgW8w8DwUlVpzA
166
126
  runbooks/inventory/list_ssm_parameters.py,sha256=uA-69R5fGK-cPntBhliffPfki5igDQReD5q0XKHtUj8,19881
167
127
  runbooks/inventory/list_vpc_subnets.py,sha256=HcKjbmU9mydJhC7QQ4f4C4MzRF6pY9xf-gCdE_42DnI,19001
168
128
  runbooks/inventory/list_vpcs.py,sha256=b_54AqH_IgpJ_Qe4VcU-XKmvhfmc5rEJBLWldZw2lF4,18120
169
- runbooks/inventory/lockdown_cfn_stackset_role.py,sha256=1qiG845cVpab3tzLT9JmVTPq4CufSExNQQRd1rm1kHo,8282
170
129
  runbooks/inventory/recover_cfn_stack_ids.py,sha256=_KgQgDgZRxeyzUb5im6RM-gORZL9WmD03jKpruwp3os,8638
171
130
  runbooks/inventory/requirements.txt,sha256=W8mvfeKf86CfTIeRJyqa978xJ77Cjfh4mlQ3Gb4YrCc,213
172
131
  runbooks/inventory/run_on_multi_accounts.py,sha256=ecyzqffcHAoWovjoUlT643duC3sCdpCAz6z-S8vEIwU,8586
173
- runbooks/inventory/update_aws_actions.py,sha256=y95kGJQFCt94OMWW6Dgx_R0dCJHbpx9FUQhOsfBsICc,5594
174
- runbooks/inventory/update_cfn_stacksets.py,sha256=OlAQVT34zm1gJRp90e0GIyCWFHNzL99r9MjPxGVgwyo,64229
175
- runbooks/inventory/update_cloudwatch_logs_retention_policy.py,sha256=WSjxo0Jiuqs_HrTKvTYBH9ISakXpusf4Iz5c45XfqdQ,12340
176
- runbooks/inventory/update_iam_roles_cross_accounts.py,sha256=BfOqs4vdvkGVh9JvQtYr7kbG8Lmq2APQWi4vW3R84jY,21038
177
- runbooks/inventory/update_s3_public_access_block.py,sha256=zLx4_eruUbXxsqlOcNbqcVNs7_FWjk87UdQDL3IPylg,22916
178
132
  runbooks/inventory/verify_ec2_security_groups.py,sha256=iFX5AlRJWaU0DP-gwdOrsXc3zNwsRZbjZeyjcn0YMUA,68221
179
133
  runbooks/inventory/LandingZone/delete_lz.py,sha256=hMwv-T8RTjQQdx9oLelABibFHGD9TFR0xkI_Hgfabw0,48920
180
- runbooks/inventory/collectors/__init__.py,sha256=RcAYtYm1hPeAfK0QenfRRTSkE78_tTY-XKEvidjQARA,690
134
+ runbooks/inventory/Tests/common_test_data.py,sha256=M4qRXxYu-WphsJnnumG0P7ENK3OX1Gh2AoCxFN71U4s,180677
135
+ runbooks/inventory/Tests/common_test_functions.py,sha256=WKeLHuAclroH1Jhc2RyDU9L7d9L4nH6fIFS2NjNtokE,8710
136
+ runbooks/inventory/Tests/script_test_data.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
+ runbooks/inventory/Tests/setup.py,sha256=hig677ZZWySuWa5nlL1McAjLR3JMaFP1w6ysS9fISeg,698
138
+ runbooks/inventory/Tests/src.py,sha256=5JhsRWGkrukMa8vGXbei64z_0j9K7c7uNmHk-TK8ZXE,641
139
+ runbooks/inventory/Tests/test_Inventory_Modules.py,sha256=OcGqt_Za3Se2hRbDidbcd-WZQfR3IOhsLBnAOsNhz14,2164
140
+ runbooks/inventory/Tests/test_cfn_describe_stacks.py,sha256=0Lt9pU8rlhnDo1-AnQLlSYSIzr3jl-NB6NUjj8QnRmI,7793
141
+ runbooks/inventory/Tests/test_ec2_describe_instances.py,sha256=TPwK-sW3H3da30s1e-toJRpKJDhAZqE7l9sbh99buKc,8314
142
+ runbooks/inventory/Tests/test_lambda_list_functions.py,sha256=4sABlsEVTxGzGtFVT5k4K5bYzK9YsX828_2_RkeHQas,3163
143
+ runbooks/inventory/Tests/test_moto_integration_example.py,sha256=mBS6Tnr5Wd2EfzhhnbCqZxMEsPdjNPtu8PDrzsMT3JA,9357
144
+ runbooks/inventory/Tests/test_org_list_accounts.py,sha256=otlaEcVED1bJEkwxWu0zrmMDM9JX5fvw72V0kD17j38,2233
145
+ runbooks/inventory/collectors/__init__.py,sha256=gmRyAeXqZt-0KgBD4eh77zQs-dcxpKVci0470yZInMg,1101
181
146
  runbooks/inventory/collectors/aws_compute.py,sha256=MzxNqE1YWRdTVtLyJNNXgWabyvLU1kKoiKpe9Cn0RdU,21018
182
- runbooks/inventory/collectors/aws_networking.py,sha256=qkH9j3mwko3pXYmSiIk_Nt9FhFZOi678eI9HZTW9yhY,11449
147
+ runbooks/inventory/collectors/aws_management.py,sha256=kRB3mxCGXq3TfXlINzdhxIb0sB6CzGoO698JeuyKLWc,32932
148
+ runbooks/inventory/collectors/aws_networking.py,sha256=8PbLVWrg_wls5a7NJm59e09WSglPwVGpL5wL48TeDDs,11425
183
149
  runbooks/inventory/collectors/base.py,sha256=cOFE-zUOOWYQJPxK0p9lwqPfBopS_bfX_LBrc9qq5TY,7371
184
150
  runbooks/inventory/core/__init__.py,sha256=kCH8dKMGp3bAYNPQI7OegiQdglV0G1k36gUtAKT6avE,562
185
151
  runbooks/inventory/core/collector.py,sha256=YYeAKgbVlJmltwZoPBCtacTSz5HYTwkEjL7z2IWjEcE,11769
@@ -188,25 +154,67 @@ runbooks/inventory/models/__init__.py,sha256=LjW8NAHcDeBFvjXjAZwoo73xwQHid8f1-Fi
188
154
  runbooks/inventory/models/account.py,sha256=G-7NtoRi8VRX6B0VoMF4qirwTNU_3ukMRGThylQKEbA,7109
189
155
  runbooks/inventory/models/inventory.py,sha256=zNaQLvpshWeljbnbaTAeQ_6rJZ4HDPpwPovY7LfwrFY,11434
190
156
  runbooks/inventory/models/resource.py,sha256=mSTpOv0EE5t-jZtLofsovXb1bpG9EE2HTU_0KjeE8Jo,8539
191
- runbooks/inventory/tests/common_test_data.py,sha256=M4qRXxYu-WphsJnnumG0P7ENK3OX1Gh2AoCxFN71U4s,180677
192
- runbooks/inventory/tests/common_test_functions.py,sha256=WKeLHuAclroH1Jhc2RyDU9L7d9L4nH6fIFS2NjNtokE,8710
193
- runbooks/inventory/tests/script_test_data.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- runbooks/inventory/tests/setup.py,sha256=hig677ZZWySuWa5nlL1McAjLR3JMaFP1w6ysS9fISeg,698
195
- runbooks/inventory/tests/src.py,sha256=5JhsRWGkrukMa8vGXbei64z_0j9K7c7uNmHk-TK8ZXE,641
196
- runbooks/inventory/tests/test_cfn_describe_stacks.py,sha256=0Lt9pU8rlhnDo1-AnQLlSYSIzr3jl-NB6NUjj8QnRmI,7793
197
- runbooks/inventory/tests/test_ec2_describe_instances.py,sha256=TPwK-sW3H3da30s1e-toJRpKJDhAZqE7l9sbh99buKc,8314
198
- runbooks/inventory/tests/test_inventory_modules.py,sha256=OcGqt_Za3Se2hRbDidbcd-WZQfR3IOhsLBnAOsNhz14,2164
199
- runbooks/inventory/tests/test_lambda_list_functions.py,sha256=4sABlsEVTxGzGtFVT5k4K5bYzK9YsX828_2_RkeHQas,3163
200
- runbooks/inventory/tests/test_moto_integration_example.py,sha256=mBS6Tnr5Wd2EfzhhnbCqZxMEsPdjNPtu8PDrzsMT3JA,9357
201
- runbooks/inventory/tests/test_org_list_accounts.py,sha256=otlaEcVED1bJEkwxWu0zrmMDM9JX5fvw72V0kD17j38,2233
202
157
  runbooks/inventory/utils/__init__.py,sha256=c6bQD-Foq3U8tw-JK8PYR-o8K5MwJ3mJWkKi2UbDLtg,830
203
158
  runbooks/inventory/utils/aws_helpers.py,sha256=rg1L69An3PLVWrTTiHGjL29Z8N51rOVYLostN8CCcwk,17124
204
159
  runbooks/inventory/utils/threading_utils.py,sha256=ckizvb0QSWx1xkDanvaoUOCHaXOm2E6Abg1VQFxfJrU,16067
205
160
  runbooks/inventory/utils/validation.py,sha256=HoQmEr9CSEfS1yF0uyCAW5TKlG-u9-t-YRouThSBxeA,19803
206
- runbooks/organizations/__init__.py,sha256=R-33CAEz_sRPNfP_JCWiPbCQn4CSe6UxvpMEnT4H3AI,251
207
- runbooks/organizations/manager.py,sha256=p9vUcGc1jGx5ke88EQ08ccexZ-TyppwU7_V5otXBJIg,14383
161
+ runbooks/operate/__init__.py,sha256=fqFgURzM0H13TaIfycJlMQHIk78mVfHFCzvJkhcTTp0,7258
162
+ runbooks/operate/base.py,sha256=-pgIOqCzCH-0nNiZWVvp4efy26g7K4l2KgDMcpJRhng,10154
163
+ runbooks/operate/cloudformation_operations.py,sha256=U6zDeDnnGUiOu1GXCYtC_5g2LJMqzic6RX61VsYejfw,24481
164
+ runbooks/operate/cloudwatch_operations.py,sha256=CHqJ-vf9dh_AhnEZ6lrr9BYM4QKiMGYnSa7Qc4lwXPo,19071
165
+ runbooks/operate/dynamodb_operations.py,sha256=jqG3Bj6um2nWNzOcAv8aoNac2R4Slws8CoN9BC55fVo,31363
166
+ runbooks/operate/ec2_operations.py,sha256=uZDHoXPKtuXNb-DmDT5zZJ5xmmkZOQT_Ga02r1mKob4,38305
167
+ runbooks/operate/iam_operations.py,sha256=0x6LWczQsSNBgQgXZAJLXM1kMwMIfH5pqwMmU72jQig,21378
168
+ runbooks/operate/s3_operations.py,sha256=k6cXa-NVzikj5ODZgLtuo417hzyJJVHE9cIzTGV4NwA,47107
169
+ runbooks/operate/tagging_operations.py,sha256=UMyiXTly6hy7ZrehalHQmWaAG1lKVW2yviOUFDY7zv8,26228
170
+ runbooks/operate/tags.json,sha256=-Y77SDvrvn0sCdsxgdRwu0sl0mih2Ib_N6nGi-UtE5U,513
171
+ runbooks/remediation/CLAUDE.md,sha256=E7u7DX4nso7yN4suoV7HS1T52058zdUNfiExZkEVd1o,3999
172
+ runbooks/remediation/DOME9.md,sha256=g2qMJmkoMdfUZWoGufo-tNXPLFV9utDlsWatAKsflnY,43743
173
+ runbooks/remediation/README.md,sha256=qoO6D8qaF5o5K-yBoGfslu8ChaijWnWJaqh_AveqLV8,386
174
+ runbooks/remediation/__init__.py,sha256=xtmVEgarrkYU66tp_jT0rM-pMxpOQq69nOfFI-qsAx0,3422
175
+ runbooks/remediation/acm_cert_expired_unused.py,sha256=_SfttBHKMBfXNtI1006Ci1dCYDgqhCEGGI5Ua3RvQGk,3541
176
+ runbooks/remediation/acm_remediation.py,sha256=0A3-aOBo1A5CkusTs77136m93TzPWRkFjN6-xXYUNrI,38824
177
+ runbooks/remediation/api_gateway_list.py,sha256=7RyTSmmhQaezNt9Ksh_BktSAPaQ7DGKQeBviqbkEdS0,7180
178
+ runbooks/remediation/base.py,sha256=7GjQr80Ce7FqftFCuXGiib_YdYQJaKUJQR4z_jgCdaE,24480
179
+ runbooks/remediation/cloudtrail_remediation.py,sha256=eumUem5lCuY7Hcm0w7rJhnAX7xrWBRoNShxmGJih074,38390
180
+ runbooks/remediation/cloudtrail_s3_modifications.py,sha256=DaN6DmvTgZk4D2QlxXEJ4yUc1m1oi7U1myNX7krA00Q,13147
181
+ runbooks/remediation/cognito_active_users.py,sha256=ZKtludgCL0ufWiWpiodfD8DNRKSiIMWcQeBBBANH4o8,2973
182
+ runbooks/remediation/cognito_remediation.py,sha256=2uWiNo0LSo3lCA4UOmeuvCSsAPVqVuoLkiru67LrW5k,36966
183
+ runbooks/remediation/cognito_user_password_reset.py,sha256=1pBLS9Ccdu8ohflGcbsBI-HLKLbNYsU39sijielAcQk,6902
184
+ runbooks/remediation/commons.py,sha256=f3QcUHyZ0fRHWYvh3NNVJoittoS8eEeVZ7cUiGWFseQ,15348
185
+ runbooks/remediation/dynamodb_optimize.py,sha256=CKezH6osJlW44kpu47STN0K6Q9EbL69FYr2SmwjcHmw,5987
186
+ runbooks/remediation/dynamodb_remediation.py,sha256=o9zwjjbgkMkXxtUe3Qq4NAOBYaNXd3KbaioRrZQdLx8,30872
187
+ runbooks/remediation/dynamodb_server_side_encryption.py,sha256=wnXwRcXzR3dFpcsA-5CjyCvPBixOiflN2H8Rfdp8Wao,3802
188
+ runbooks/remediation/ec2_public_ips.py,sha256=BcTi7QGihyy5brPa2zJSiqk0fcFYok5YO96B6GrEf68,5331
189
+ runbooks/remediation/ec2_remediation.py,sha256=mzQVZJeSzYsfH1co-V96oW-fkqPAzS3-Odq-qi0JNzg,37035
190
+ runbooks/remediation/ec2_subnet_disable_auto_ip_assignment.py,sha256=UeXqp2qTCj2oXwGKXH_6H1PcBQANjMAXXIKADH1kOd4,2723
191
+ runbooks/remediation/ec2_unattached_ebs_volumes.py,sha256=x8vgSFOzQo5mfN-tOKLaBt1IzHqWmuhSv5gEFR2_fYk,18987
192
+ runbooks/remediation/ec2_unused_security_groups.py,sha256=YKG4-UBipJEdoMvy1Pt5-j3CdK-4LlmdXSJ3wyxZdNA,8512
193
+ runbooks/remediation/kms_enable_key_rotation.py,sha256=Ulpltvh-n_PHLxKE2rI5UsEHr-L3edjkTdv9-mIDurw,27587
194
+ runbooks/remediation/kms_remediation.py,sha256=YxscKTGWEh7ViPYmDFzeORjS6Qds04iZKC6dHZfAvnY,29381
195
+ runbooks/remediation/lambda_list.py,sha256=B5dQzg_nWXbuC-h0TuCE1hH26Rsm5jeNkmRZrbYGekM,10925
196
+ runbooks/remediation/lambda_remediation.py,sha256=MKOqWDpRQ41xSa9J4GdmABvK7_LiNAs-hp5zPkFdxZ4,42553
197
+ runbooks/remediation/multi_account.py,sha256=DBC2abhQAjIx7nbPqTZjIQGcUL0farQgZt6cIV7sYp4,22062
198
+ runbooks/remediation/rds_instance_list.py,sha256=Nl1Pe1DDBZBl3SDjnY2i51IrcErELgCh2W1EXQyu_Dc,8476
199
+ runbooks/remediation/rds_remediation.py,sha256=KVgo9ermkR0f19-0Jq-e0_c8ImfsB_XAGIYyeWC4EfM,37069
200
+ runbooks/remediation/rds_snapshot_list.py,sha256=7ImBYvHScpP_TxnccE2pWbwuiYlblZKtXZ1YzsSVLiY,7933
201
+ runbooks/remediation/requirements.txt,sha256=xwrVRq4cK8GbX9cwt_8TLLj8kCJHQ06tqBrH_wukMzE,2091
202
+ runbooks/remediation/s3_block_public_access.py,sha256=mTBIxaiBnyjyAOMFxzhFhlRwBDYFl9tXbkoFTBDLy4o,6331
203
+ runbooks/remediation/s3_bucket_public_access.py,sha256=eejdaWik_QpWHIMAZSdHWVckJBHL3VkXRBCIDFcVVVI,5533
204
+ runbooks/remediation/s3_disable_static_website_hosting.py,sha256=08CeFqDfGpLRAwGVJQDiEyA2ct_pHSXiSh9Wt0_iIOI,2749
205
+ runbooks/remediation/s3_downloader.py,sha256=WteUk1xMiiUdnUOeC_O3RhbAVSEfKB4XyYbWSW29lT4,8777
206
+ runbooks/remediation/s3_enable_access_logging.py,sha256=jUxMy7Dy0EweuCxW-YQ43nHSSmptmL6cYfxZuniHGyc,24672
207
+ runbooks/remediation/s3_encryption.py,sha256=K94Xn7yd9SZ3IgFjubEw87_NzWyIPeX4lgZKLoFOGPM,21064
208
+ runbooks/remediation/s3_force_ssl_secure_policy.py,sha256=j-p0T5xjk8l4wIgtW07yYuoWIYhcDyVL_UgdrdNGPDY,5219
209
+ runbooks/remediation/s3_list.py,sha256=PB7MqI13GYR6-PhYtqf3MIdURWbd1dVKdSSDUoubmVE,6313
210
+ runbooks/remediation/s3_object_search.py,sha256=8MnbwVwz2qZ0IK_C_uzMwNCfMnkB24d8JgrIN03lqSo,7904
211
+ runbooks/remediation/s3_remediation.py,sha256=ix-WoeND_galxEhV901T3E__bNovqvcE_Z6bWToLbC0,33014
212
+ runbooks/remediation/scan_for_phrase.py,sha256=FgTpDXnLg1tdnU6aYTmvOZu9CMjZMsfrZCNOSLqL4P4,18958
213
+ runbooks/remediation/workspaces_list.py,sha256=M6UGSmHT_IfTD2Dk58fO0b38wAp3Rb7IXvuI0S46Inw,9426
214
+ runbooks/remediation/Tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
+ runbooks/remediation/Tests/update_policy.py,sha256=7jb5hMR6jVbCUwzl5MHVqxrIGFN9_2-trIMUV-R7Kls,2999
208
216
  runbooks/security/README.md,sha256=NiOHsV8Kal5LHh3mJtEjw30rCjx-9JjnMzPjXe4_Hzo,17850
209
- runbooks/security/__init__.py,sha256=KtHlDbIIkRTtLDrD1v4Daq1VVU8t-FH3JXbpA0GP4-k,1849
217
+ runbooks/security/__init__.py,sha256=tVfoTO03gnk0BB7vI_XuDsBCmGfd7_c-BNg4Rc9GBLo,1844
210
218
  runbooks/security/config-origin.json,sha256=3mijAIymVtkf1V_BzDJPnQSBSFjrYyL-wrPBH3t8gXQ,1009
211
219
  runbooks/security/config.json,sha256=3mijAIymVtkf1V_BzDJPnQSBSFjrYyL-wrPBH3t8gXQ,1009
212
220
  runbooks/security/permission.json,sha256=3p9xDYEKLfOT171GE8gV2dAjgw2TFNoggGB65w2q-L8,1261
@@ -216,7 +224,7 @@ runbooks/security/report_template_jp.html,sha256=UARo0jfvNe41W9m70r_U6kqw8arq8N7
216
224
  runbooks/security/report_template_kr.html,sha256=m3lf59ef12qaLsd_Zs2uZlYHVru0tQwt-e7q9odrvhc,10383
217
225
  runbooks/security/report_template_vn.html,sha256=UARo0jfvNe41W9m70r_U6kqw8arq8N7Y0G5bqq6Mk5w,7983
218
226
  runbooks/security/run_script.py,sha256=TrydLAuZ6_1AOo-CeNRqCYWABXDXAniyQ506KP6IRKI,2322
219
- runbooks/security/security_baseline_tester.py,sha256=YVJ1HNtqtpZ6fVZ7QhC5FU1dDM658IVjvk9XxPSkmJQ,7839
227
+ runbooks/security/security_baseline_tester.py,sha256=xMQ8Pp6dp1X_SU42AoAfZiezjHf95vrJEEAzuIxpU-Q,7839
220
228
  runbooks/security/checklist/__init__.py,sha256=gXjVSA36zv5jCkaw3XASG8DpLPo6Fu8yxquUdX8YSFY,455
221
229
  runbooks/security/checklist/account_level_bucket_public_access.py,sha256=_sILKNiBg-33wUUxoZhUq2O-x-xC2zZU9cQUehYMxTs,3386
222
230
  runbooks/security/checklist/alternate_contacts.py,sha256=D65xPRbiregtYQ76kkKjy9GxHbbI_HWGEVF7Sbeu_bU,3172
@@ -241,9 +249,9 @@ runbooks/security/utils/level_const.py,sha256=l8uYBmgEMjIQTGVVuXPAfDd_Psl6jNfTQw
241
249
  runbooks/security/utils/permission_list.py,sha256=nq06vlILHp9rfnCpJauCmFCOEGdgFMF-XO3uBFrrd-o,767
242
250
  runbooks/utils/__init__.py,sha256=3K-CwUA_NEN9R7RT5PeELs-VLSgVKUfkV-4NJkbCg90,5770
243
251
  runbooks/utils/logger.py,sha256=ifxqLjDlZoDaG8rtAGVKLZ5dAwcMn16rB4YgMfeUC3E,972
244
- runbooks-0.7.0.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
245
- runbooks-0.7.0.dist-info/METADATA,sha256=D0KfhkzoqHPWg-tBiI_oQTPs045waJRJUEj2vugBWnY,14924
246
- runbooks-0.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
247
- runbooks-0.7.0.dist-info/entry_points.txt,sha256=Us-ey766qGdkpEFj5q9sB2V-QO0O34O3yS9ezhLPjfg,262
248
- runbooks-0.7.0.dist-info/top_level.txt,sha256=dC5G9UiKrI_9_0dBLWwpGi1JFPRp_Qspi23URlD5WyU,32
249
- runbooks-0.7.0.dist-info/RECORD,,
252
+ runbooks-0.7.6.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
253
+ runbooks-0.7.6.dist-info/METADATA,sha256=tR_okgkKovVNu3De0TihCGaQym-0glHx9wHSK9CuJTg,26273
254
+ runbooks-0.7.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
255
+ runbooks-0.7.6.dist-info/entry_points.txt,sha256=OUdFCP5rg5Q1bS1lqyZ8z1NjdGMyIj3t1M7eHd6CRuM,223
256
+ runbooks-0.7.6.dist-info/top_level.txt,sha256=A0zTBjuF7THC6vnJU7StN7ihtUoh31lZSfwyWpWP2YE,18
257
+ runbooks-0.7.6.dist-info/RECORD,,
@@ -1,7 +1,6 @@
1
1
  [console_scripts]
2
2
  cfat = runbooks.cfat.cli:main
3
3
  runbooks = runbooks.main:main
4
- runbooks-aws = runbooks.aws:run_script
5
4
  runbooks-cfat = runbooks.cfat.cli:main
6
5
  runbooks-finops = runbooks.finops.cli:main
7
6
  runbooks-security = runbooks.security_baseline.run_script:main
@@ -1,3 +1,2 @@
1
1
  conftest
2
- jupyter-agent
3
2
  runbooks
jupyter-agent/.env DELETED
@@ -1,2 +0,0 @@
1
- E2B_API_KEY=e2b_5a55ac409ab539d392e74a9c2aa8c5421eaeec91
2
- HF_TOKEN=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
@@ -1,2 +0,0 @@
1
- E2B_API_KEY=your_e2b_api_key_here
2
- HF_TOKEN=your_huggingface_token_here
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
@@ -1,31 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
3
- 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
- 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
- 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
- ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
7
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
17
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
31
- -----END CERTIFICATE-----
jupyter-agent/README.md DELETED
@@ -1,16 +0,0 @@
1
- ---
2
- title: Jupyter Agent
3
- emoji: 🏃
4
- colorFrom: red
5
- colorTo: purple
6
- sdk: gradio
7
- sdk_version: 5.8.0
8
- app_file: app.py
9
- pinned: false
10
- thumbnail: cloudops-agent.png
11
- ---
12
-
13
-
14
- # Task-Specialized Agents for automation, by focusing on well-defined problems with clear success metrics
15
-
16
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
@@ -1,8 +0,0 @@
1
- 2025-02-07 08:59:31,890 - INFO - Notebook saved to ./tmp/hohanq1u097/jupyter-agent.ipynb
2
- 2025-02-07 09:08:58,989 - INFO - Notebook saved to ./tmp/4ojbs8a02ir/jupyter-agent.ipynb
3
- 2025-02-07 09:16:22,801 - INFO - Notebook saved to ./tmp/4ojbs8a02ir/jupyter-agent.ipynb
4
- 2025-02-07 10:27:19,698 - INFO - Notebook saved to ./tmp/crqbsseag5/jupyter-agent.ipynb
5
- 2025-02-07 10:29:00,714 - INFO - Notebook saved to ./tmp/crqbsseag5/jupyter-agent.ipynb
6
- 2025-02-07 10:44:22,894 - INFO - Notebook saved to ./tmp/jns1sam29wm/jupyter-agent.ipynb
7
- 2025-02-07 11:56:07,281 - INFO - Notebook saved to ./tmp/cm5iasgpm3p/jupyter-agent.ipynb
8
- 2025-02-07 11:57:38,936 - INFO - Notebook saved to ./tmp/cm5iasgpm3p/jupyter-agent.ipynb
jupyter-agent/app.py DELETED
@@ -1,256 +0,0 @@
1
- """
2
- app.py
3
-
4
- Main entry point for the Jupyter Agent. This file sets up the Gradio user interface,
5
- handles session-specific sandbox initialization, file management, and orchestrates
6
- the interactive notebook generation and code execution.
7
- """
8
-
9
- import json
10
- import os
11
- from pathlib import Path
12
- from typing import Any, Dict, List, Tuple
13
-
14
- import gradio as gr
15
- from e2b_code_interpreter import Sandbox
16
- from gradio.utils import get_space
17
- from huggingface_hub import InferenceClient
18
- from transformers import AutoTokenizer
19
-
20
- ## Import helper functions from utils with type hints
21
- from utils import (
22
- create_base_notebook,
23
- run_interactive_notebook,
24
- update_notebook_display,
25
- )
26
-
27
- from runbooks.utils.logger import configure_logger
28
-
29
- ## ✅ Configure Logger
30
- logger = configure_logger(__name__)
31
-
32
- ## Load environment variables if not running in a Hugging Face Space
33
- if not get_space():
34
- try:
35
- from dotenv import load_dotenv
36
-
37
- load_dotenv()
38
- except (ImportError, ModuleNotFoundError):
39
- logger.warning("python-dotenv not installed; proceeding without .env support.")
40
- pass
41
-
42
- ## Global configurations
43
- ## For sandbox execution and Hugging Face API authentication
44
- E2B_API_KEY = os.environ["E2B_API_KEY"]
45
- HF_TOKEN = os.environ["HF_TOKEN"]
46
- ## Set a limit on the number of new tokens generated per request.
47
- DEFAULT_MAX_TOKENS = 512
48
- ## A dictionary used to keep track of separate execution environments (sandboxes) for each session.
49
- SANDBOXES = {}
50
- ## For storing temporary files (e.g., generated notebooks)
51
- TMP_DIR = "./tmp/"
52
- ## Ensure the temporary directory exists
53
- if not os.path.exists(TMP_DIR):
54
- os.makedirs(TMP_DIR)
55
-
56
- ## Initialize a base notebook on startup
57
- notebook_data = create_base_notebook([])[0]
58
- with open(TMP_DIR + "jupyter-agent.ipynb", "w", encoding="utf-8") as f:
59
- json.dump(notebook_data, f, indent=2)
60
-
61
- ## Read default system prompt
62
- try:
63
- with open("ds-system-prompt.txt", "r", encoding="utf-8") as f:
64
- DEFAULT_SYSTEM_PROMPT: str = f.read()
65
- except FileNotFoundError:
66
- logger.error("ds-system-prompt.txt not found. Please ensure it is available.")
67
- DEFAULT_SYSTEM_PROMPT = ""
68
-
69
-
70
- ## --- Main Execution Function ---
71
- def execute_jupyter_agent(
72
- system_prompt: str,
73
- user_input: str,
74
- max_new_tokens: int,
75
- model: str,
76
- files: List[str],
77
- message_history: List[Dict[str, Any]],
78
- request: gr.Request,
79
- ) -> Tuple[str, List[Dict[str, Any]], str]:
80
- """
81
- Core callback function that orchestrates the interactive notebook generation.
82
-
83
- :param system_prompt: The system prompt template.
84
- :param user_input: User's input command.
85
- :param max_new_tokens: Maximum number of tokens to generate.
86
- :param model: Identifier for the language model.
87
- :param files: List of file paths uploaded by the user.
88
- :param message_history: History of conversation messages.
89
- :param request: Gradio request object with session details.
90
- :return: A tuple containing the updated notebook HTML, updated message history,
91
- and the path to the generated notebook file.
92
- """
93
- ## Retrieve or create a sandbox instance for the given session.
94
- if request.session_hash not in SANDBOXES:
95
- ## Create a new Sandbox with the E2B API key and stored
96
- SANDBOXES[request.session_hash] = Sandbox(api_key=E2B_API_KEY)
97
- sbx = SANDBOXES[request.session_hash]
98
-
99
- ## Create session-specific directory for saving notebook
100
- save_dir = os.path.join(TMP_DIR, request.session_hash)
101
- os.makedirs(save_dir, exist_ok=True)
102
- save_dir = os.path.join(save_dir, "jupyter-agent.ipynb")
103
-
104
- ## Initializes an inference client for text generation using the provided Hugging Face token.
105
- client = InferenceClient(api_key=HF_TOKEN)
106
-
107
- ## Loads the tokenizer corresponding to the chosen model.
108
- tokenizer = AutoTokenizer.from_pretrained(model)
109
- # model = "meta-llama/Llama-3.1-8B-Instruct"
110
-
111
- ## Process uploaded files
112
- filenames = []
113
- if files is not None:
114
- for filepath in files:
115
- filpath = Path(filepath)
116
- with open(filepath, "rb") as file:
117
- print(f"uploading {filepath}...")
118
- ## Write the file into the sandbox’s file system (allowing the agent to access it during execution).
119
- sbx.files.write(filpath.name, file)
120
- filenames.append(filpath.name)
121
-
122
- ## Initialize message_history if it doesn't exist
123
- if len(message_history) == 0:
124
- message_history.append(
125
- {
126
- "role": "system",
127
- "content": system_prompt.format("- " + "\n- ".join(filenames)),
128
- }
129
- )
130
- message_history.append({"role": "user", "content": user_input})
131
-
132
- ## Outputs the current conversation history for debugging purposes.
133
- logger.debug(f"Message history: {message_history}")
134
-
135
- ## Generate notebook updates by streaming responses
136
- for notebook_html, notebook_data, messages in run_interactive_notebook(
137
- client, model, tokenizer, message_history, sbx, max_new_tokens=max_new_tokens
138
- ):
139
- message_history = messages
140
-
141
- ## Yield intermediate UI updates with a fixed download path (initial version)
142
- yield notebook_html, message_history, TMP_DIR + "jupyter-agent.ipynb"
143
-
144
- ## Save the final notebook JSON data to a specified path.
145
- with open(save_dir, "w", encoding="utf-8") as f:
146
- json.dump(notebook_data, f, indent=2)
147
- yield notebook_html, message_history, save_dir
148
- logger.info(f"Notebook saved to {save_dir}")
149
-
150
-
151
- def clear(msg_state):
152
- msg_state = []
153
- return update_notebook_display(create_base_notebook([])[0]), msg_state
154
-
155
-
156
- ## Gradio components fill the full height of the viewport, allow scrolling, and have appropriate padding
157
- custom_css = """
158
- #component-0 {
159
- height: 100vh;
160
- overflow-y: auto;
161
- padding: 20px;
162
- }
163
-
164
- .gradio-container {
165
- height: 100vh !important;
166
- }
167
-
168
- .contain {
169
- height: 100vh !important;
170
- }
171
- """
172
- ## TODO
173
- # footer {
174
- # visibility: hidden;
175
- # }
176
-
177
-
178
- ## Build and return the Gradio Blocks interface for the Jupyter Agent.
179
- # with gr.Blocks(css=custom_css) as poc:
180
- with gr.Blocks() as poc:
181
- msg_state = gr.State(value=[])
182
-
183
- html_output = gr.HTML(value=update_notebook_display(create_base_notebook([])[0]))
184
-
185
- user_input = gr.Textbox(
186
- value="Solve the Bayes' theorem equation and plot the results.",
187
- lines=3,
188
- label="User input",
189
- )
190
-
191
- with gr.Row():
192
- generate_btn = gr.Button("▶️ Let's go!")
193
- clear_btn = gr.Button("🧹 Clear")
194
-
195
- file = gr.File(
196
- TMP_DIR + "jupyter-agent.ipynb", label="💾 Download Jupyter Notebook"
197
- )
198
-
199
- with gr.Accordion("Upload files", open=False):
200
- files = gr.File(label="Upload files to use", file_count="multiple")
201
-
202
- with gr.Accordion("Advanced Settings", open=False):
203
- system_input = gr.Textbox(
204
- label="System Prompt",
205
- value=DEFAULT_SYSTEM_PROMPT,
206
- elem_classes="input-box",
207
- lines=8,
208
- )
209
- with gr.Row():
210
- max_tokens = gr.Number(
211
- label="Max New Tokens",
212
- value=DEFAULT_MAX_TOKENS,
213
- minimum=128,
214
- maximum=2048,
215
- step=8,
216
- interactive=True,
217
- )
218
-
219
- model = gr.Dropdown(
220
- # value="meta-llama/Llama-3.1-8B-Instruct",
221
- value="meta-llama/Llama-3.3-70B-Instruct",
222
- choices=[
223
- ## Text only instruct-tuned model in 70B size (text in/text out).
224
- "meta-llama/Llama-3.3-70B-Instruct",
225
- ## Pretrained and fine-tuned text models with sizes
226
- "meta-llama/Llama-3.1-8B-Instruct",
227
- ## pretrained and instruction-tuned image reasoning generative models in 11B and 90B sizes (text + images in / text out)
228
- "meta-llama/Llama-3.2-3B-Instruct",
229
- "meta-llama/Llama-3.2-11B-Vision-Instruct",
230
- ],
231
- label="Models",
232
- )
233
-
234
- generate_btn.click(
235
- fn=execute_jupyter_agent,
236
- inputs=[system_input, user_input, max_tokens, model, files, msg_state],
237
- outputs=[html_output, msg_state, file],
238
- )
239
-
240
- clear_btn.click(fn=clear, inputs=[msg_state], outputs=[html_output, msg_state])
241
-
242
- poc.load(
243
- fn=None,
244
- inputs=None,
245
- outputs=None,
246
- js=""" () => {
247
- if (document.querySelectorAll('.dark').length) {
248
- document.querySelectorAll('.dark').forEach(el => el.classList.remove('dark'));
249
- }
250
- }
251
- """,
252
- )
253
-
254
- ## Main entry point: launch the Gradio interface.
255
- ## Disable server-side rendering (i.e., client-side rendering is used).
256
- poc.launch(ssr_mode=False, pwa=True, share=True)
Binary file