diagram-to-iac 1.3.0__py3-none-any.whl → 1.5.0__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.
- diagram_to_iac/agents/demonstrator_langgraph/config.yaml +56 -0
- diagram_to_iac/agents/git_langgraph/config.yaml +91 -0
- diagram_to_iac/agents/hello_langgraph/config.yaml +6 -0
- diagram_to_iac/agents/policy_agent/config.yaml +43 -0
- diagram_to_iac/agents/supervisor_langgraph/config.yaml +55 -0
- diagram_to_iac/agents/terraform_langgraph/config.yaml +25 -0
- diagram_to_iac/config.yaml +253 -0
- diagram_to_iac/core/config_loader.py +74 -85
- diagram_to_iac/core/enhanced_memory.py +22 -5
- diagram_to_iac/core/registry.py +23 -3
- diagram_to_iac/core/test_config.py +123 -0
- diagram_to_iac/templates/issue_frontmatter.yml +240 -0
- diagram_to_iac/tools/api_utils.py +12 -2
- diagram_to_iac/tools/git/git_config.yaml +102 -0
- diagram_to_iac/tools/llm_utils/router.py +14 -3
- diagram_to_iac/tools/sec_utils.py +95 -38
- diagram_to_iac/tools/shell/shell_config.yaml +41 -0
- diagram_to_iac/tools/tf/terraform_config.yaml +21 -0
- {diagram_to_iac-1.3.0.dist-info → diagram_to_iac-1.5.0.dist-info}/METADATA +10 -4
- {diagram_to_iac-1.3.0.dist-info → diagram_to_iac-1.5.0.dist-info}/RECORD +23 -11
- {diagram_to_iac-1.3.0.dist-info → diagram_to_iac-1.5.0.dist-info}/WHEEL +0 -0
- {diagram_to_iac-1.3.0.dist-info → diagram_to_iac-1.5.0.dist-info}/entry_points.txt +0 -0
- {diagram_to_iac-1.3.0.dist-info → diagram_to_iac-1.5.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,102 @@
|
|
1
|
+
# Git Tools specific configuration
|
2
|
+
# Inherits common settings from src/diagram_to_iac/config.yaml
|
3
|
+
# Only tool-specific settings and overrides are defined here
|
4
|
+
|
5
|
+
git_executor:
|
6
|
+
# Default clone settings
|
7
|
+
default_clone_depth: 1
|
8
|
+
|
9
|
+
# Authentication failure detection patterns
|
10
|
+
auth_failure_patterns:
|
11
|
+
- "Authentication failed"
|
12
|
+
- "Permission denied"
|
13
|
+
- "Could not read from remote repository"
|
14
|
+
- "fatal: unable to access"
|
15
|
+
- "403 Forbidden"
|
16
|
+
- "401 Unauthorized"
|
17
|
+
- "Please make sure you have the correct access rights"
|
18
|
+
|
19
|
+
# Repository path generation
|
20
|
+
repo_path_template: "{workspace}/{repo_name}"
|
21
|
+
sanitize_repo_names: true
|
22
|
+
|
23
|
+
# Workspace cleanup configuration
|
24
|
+
auto_cleanup_existing_repos: true # Automatically remove existing repos before cloning
|
25
|
+
cleanup_safety_check: true # Verify path is within workspace before removal
|
26
|
+
backup_existing_repos: false # Create backup before removal (future feature)
|
27
|
+
|
28
|
+
# Git-specific logging configuration
|
29
|
+
enable_detailed_logging: true
|
30
|
+
log_git_commands: true
|
31
|
+
log_auth_failures: true
|
32
|
+
|
33
|
+
# Memory integration
|
34
|
+
store_operations_in_memory: true
|
35
|
+
store_command_output: true
|
36
|
+
|
37
|
+
# GitHub CLI configuration
|
38
|
+
github_cli:
|
39
|
+
default_timeout: 60 # GitHub CLI operations timeout
|
40
|
+
require_auth_check: true
|
41
|
+
auth_failure_patterns:
|
42
|
+
- "authentication failed"
|
43
|
+
- "bad credentials"
|
44
|
+
- "token does not have permission"
|
45
|
+
- "Must have admin rights to Repository"
|
46
|
+
- "HTTP 401"
|
47
|
+
- "HTTP 403"
|
48
|
+
issue_creation_patterns:
|
49
|
+
- "title is required"
|
50
|
+
- "body is required"
|
51
|
+
- "repository not found"
|
52
|
+
success_patterns:
|
53
|
+
- "https://github.com/"
|
54
|
+
- "/issues/"
|
55
|
+
|
56
|
+
# Error messages following our pattern
|
57
|
+
error_messages:
|
58
|
+
invalid_repo_url: "Git executor: Invalid repository URL '{repo_url}'"
|
59
|
+
workspace_not_accessible: "Git executor: Workspace directory '{workspace}' is not accessible"
|
60
|
+
clone_failed: "Git executor: Failed to clone repository '{repo_url}'"
|
61
|
+
auth_failed: "Git executor: Authentication failed for repository '{repo_url}'"
|
62
|
+
timeout_exceeded: "Git executor: Git operation timed out after {timeout} seconds"
|
63
|
+
shell_executor_error: "Git executor: Shell executor error: {error}"
|
64
|
+
repo_already_exists: "Git executor: Repository '{repo_name}' already exists in workspace"
|
65
|
+
repo_cleanup_started: "Git executor: Cleaning up existing repository '{repo_name}' at '{repo_path}'"
|
66
|
+
repo_cleanup_completed: "Git executor: Successfully cleaned up existing repository '{repo_name}'"
|
67
|
+
repo_cleanup_failed: "Git executor: Failed to clean up existing repository '{repo_name}': {error}"
|
68
|
+
cleanup_safety_violation: "Git executor: Repository path '{repo_path}' is outside workspace - cleanup denied for security"
|
69
|
+
|
70
|
+
# GitHub CLI error messages
|
71
|
+
gh_auth_failed: "GitHub CLI: Authentication failed - please check GITHUB_TOKEN"
|
72
|
+
gh_repo_not_found: "GitHub CLI: Repository '{repo_url}' not found or access denied"
|
73
|
+
gh_issue_creation_failed: "GitHub CLI: Failed to create issue in '{repo_url}'"
|
74
|
+
gh_invalid_repo_format: "GitHub CLI: Invalid repository format '{repo_url}' - expected owner/repo"
|
75
|
+
gh_command_failed: "GitHub CLI: Command failed with exit code {exit_code}"
|
76
|
+
|
77
|
+
# Success messages following our pattern
|
78
|
+
success_messages:
|
79
|
+
clone_started: "Git executor: Starting clone of '{repo_url}'"
|
80
|
+
clone_completed: "Git executor: Successfully cloned '{repo_url}' to '{repo_path}' in {duration:.2f}s"
|
81
|
+
repo_path_resolved: "Git executor: Repository path resolved to '{repo_path}'"
|
82
|
+
repo_cleanup_success: "Git executor: Successfully cleaned up existing repository before cloning"
|
83
|
+
|
84
|
+
# GitHub CLI success messages
|
85
|
+
gh_issue_created: "GitHub CLI: Successfully created issue '{title}' in '{repo_url}'"
|
86
|
+
gh_auth_verified: "GitHub CLI: Authentication verified for GitHub operations"
|
87
|
+
gh_repo_accessible: "GitHub CLI: Repository '{repo_url}' is accessible"
|
88
|
+
|
89
|
+
# Status codes for structured responses
|
90
|
+
status_codes:
|
91
|
+
success: "SUCCESS"
|
92
|
+
auth_failed: "AUTH_FAILED"
|
93
|
+
error: "ERROR"
|
94
|
+
timeout: "TIMEOUT"
|
95
|
+
already_exists: "ALREADY_EXISTS"
|
96
|
+
|
97
|
+
# GitHub CLI status codes
|
98
|
+
gh_success: "GH_SUCCESS"
|
99
|
+
gh_auth_failed: "GH_AUTH_FAILED"
|
100
|
+
gh_repo_not_found: "GH_REPO_NOT_FOUND"
|
101
|
+
gh_permission_denied: "GH_PERMISSION_DENIED"
|
102
|
+
gh_error: "GH_ERROR"
|
@@ -46,9 +46,20 @@ class LLMRouter:
|
|
46
46
|
def _load_model_policy(self, config_path: Optional[str] = None) -> Dict[str, Any]:
|
47
47
|
"""Load model policy from YAML configuration."""
|
48
48
|
if config_path is None:
|
49
|
-
#
|
50
|
-
|
51
|
-
|
49
|
+
# Try multiple locations for model policy config
|
50
|
+
possible_paths = [
|
51
|
+
Path.cwd() / "config" / "model_policy.yaml", # Development
|
52
|
+
Path("/workspace/config/model_policy.yaml"), # Container workspace
|
53
|
+
Path(__file__).parent.parent.parent.parent.parent / "config" / "model_policy.yaml", # Package fallback
|
54
|
+
]
|
55
|
+
config_path = None
|
56
|
+
for path in possible_paths:
|
57
|
+
if path.exists():
|
58
|
+
config_path = path
|
59
|
+
break
|
60
|
+
# Default to workspace location if none found
|
61
|
+
if not config_path:
|
62
|
+
config_path = Path.cwd() / "config" / "model_policy.yaml"
|
52
63
|
|
53
64
|
try:
|
54
65
|
with open(config_path, 'r') as f:
|
@@ -37,44 +37,77 @@ except ImportError:
|
|
37
37
|
# Path inside container where the encoded YAML is mounted (dev only)
|
38
38
|
_YAML_PATH = pathlib.Path("/run/secrets.yaml")
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
#
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
40
|
+
def _load_config_secrets():
|
41
|
+
"""Load secret configuration from config.yaml."""
|
42
|
+
try:
|
43
|
+
# Try to load from config.yaml
|
44
|
+
config_path = pathlib.Path(__file__).parent.parent / "config.yaml"
|
45
|
+
if config_path.exists() and yaml:
|
46
|
+
config_data = yaml.safe_load(config_path.read_text())
|
47
|
+
security_config = config_data.get("security", {})
|
48
|
+
|
49
|
+
required_secrets = security_config.get("required_secrets", ["REPO_API_KEY"])
|
50
|
+
optional_secrets = security_config.get("optional_secrets", [])
|
51
|
+
secret_mappings = security_config.get("secret_mappings", {})
|
52
|
+
|
53
|
+
# Combine required and optional secrets
|
54
|
+
expected_secrets = required_secrets + optional_secrets
|
55
|
+
|
56
|
+
# Create full mapping (defaults to same name if not mapped)
|
57
|
+
full_mapping = {}
|
58
|
+
for secret in expected_secrets:
|
59
|
+
full_mapping[secret] = secret_mappings.get(secret, secret)
|
60
|
+
|
61
|
+
# AI API secrets (hardcoded as they're specific to AI functionality)
|
62
|
+
ai_secrets = [
|
63
|
+
"OPENAI_API_KEY",
|
64
|
+
"GOOGLE_API_KEY",
|
65
|
+
"ANTHROPIC_API_KEY",
|
66
|
+
"GROK_API_KEY"
|
67
|
+
]
|
68
|
+
|
69
|
+
return expected_secrets, required_secrets, ai_secrets, full_mapping
|
70
|
+
except Exception as e:
|
71
|
+
print(f"⚠️ Warning: Could not load secret config from config.yaml: {e}")
|
72
|
+
|
73
|
+
# Fallback to hardcoded values
|
74
|
+
expected_secrets = [
|
75
|
+
"DOCKERHUB_API_KEY",
|
76
|
+
"DOCKERHUB_USERNAME",
|
77
|
+
"TF_API_KEY",
|
78
|
+
"PYPI_API_KEY",
|
79
|
+
"OPENAI_API_KEY",
|
80
|
+
"GOOGLE_API_KEY",
|
81
|
+
"ANTHROPIC_API_KEY",
|
82
|
+
"GROK_API_KEY",
|
83
|
+
"REPO_API_KEY"
|
84
|
+
]
|
85
|
+
|
86
|
+
required_secrets = ["REPO_API_KEY"]
|
87
|
+
|
88
|
+
ai_secrets = [
|
89
|
+
"OPENAI_API_KEY",
|
90
|
+
"GOOGLE_API_KEY",
|
91
|
+
"ANTHROPIC_API_KEY",
|
92
|
+
"GROK_API_KEY"
|
93
|
+
]
|
94
|
+
|
95
|
+
secret_mapping = {
|
96
|
+
"REPO_API_KEY": "GITHUB_TOKEN",
|
97
|
+
"TF_API_KEY": "TFE_TOKEN",
|
98
|
+
"DOCKERHUB_API_KEY": "DOCKERHUB_API_KEY",
|
99
|
+
"DOCKERHUB_USERNAME": "DOCKERHUB_USERNAME",
|
100
|
+
"PYPI_API_KEY": "PYPI_API_KEY",
|
101
|
+
"OPENAI_API_KEY": "OPENAI_API_KEY",
|
102
|
+
"GOOGLE_API_KEY": "GOOGLE_API_KEY",
|
103
|
+
"ANTHROPIC_API_KEY": "ANTHROPIC_API_KEY",
|
104
|
+
"GROK_API_KEY": "GROK_API_KEY"
|
105
|
+
}
|
106
|
+
|
107
|
+
return expected_secrets, required_secrets, ai_secrets, secret_mapping
|
65
108
|
|
66
|
-
#
|
67
|
-
SECRET_ENV_MAPPING =
|
68
|
-
"REPO_API_KEY": "GITHUB_TOKEN",
|
69
|
-
"TF_API_KEY": "TFE_TOKEN",
|
70
|
-
"DOCKERHUB_API_KEY": "DOCKERHUB_API_KEY",
|
71
|
-
"DOCKERHUB_USERNAME": "DOCKERHUB_USERNAME",
|
72
|
-
"PYPI_API_KEY": "PYPI_API_KEY",
|
73
|
-
"OPENAI_API_KEY": "OPENAI_API_KEY",
|
74
|
-
"GOOGLE_API_KEY": "GOOGLE_API_KEY",
|
75
|
-
"ANTHROPIC_API_KEY": "ANTHROPIC_API_KEY",
|
76
|
-
"GROK_API_KEY": "GROK_API_KEY"
|
77
|
-
}
|
109
|
+
# Load configuration at module level
|
110
|
+
EXPECTED_SECRETS, REQUIRED_SECRETS, AI_API_SECRETS, SECRET_ENV_MAPPING = _load_config_secrets()
|
78
111
|
|
79
112
|
|
80
113
|
def _decode_b64(enc: str) -> str:
|
@@ -107,12 +140,35 @@ def _is_dev_environment() -> bool:
|
|
107
140
|
)
|
108
141
|
|
109
142
|
|
143
|
+
def _is_ci_environment() -> bool:
|
144
|
+
"""Check if running in CI environment."""
|
145
|
+
return os.environ.get("CI") == "true" or os.environ.get("GITHUB_ACTIONS") == "true"
|
146
|
+
|
147
|
+
|
110
148
|
def _get_env_secrets() -> Dict[str, Optional[str]]:
|
111
149
|
"""Get secrets from environment variables."""
|
112
150
|
env_secrets = {}
|
151
|
+
is_ci = _is_ci_environment()
|
152
|
+
|
113
153
|
for secret_key in EXPECTED_SECRETS:
|
114
154
|
env_name = SECRET_ENV_MAPPING.get(secret_key, secret_key)
|
115
|
-
raw_value =
|
155
|
+
raw_value = None
|
156
|
+
|
157
|
+
if is_ci:
|
158
|
+
# In CI, check for _ENCODED variant first (since that's how they're provided)
|
159
|
+
encoded_env_name = f"{secret_key}_ENCODED" # Use secret_key directly for CI
|
160
|
+
raw_value = os.environ.get(encoded_env_name)
|
161
|
+
|
162
|
+
# If not found with secret_key, try with env_name
|
163
|
+
if raw_value is None:
|
164
|
+
encoded_env_name = f"{env_name}_ENCODED"
|
165
|
+
raw_value = os.environ.get(encoded_env_name)
|
166
|
+
|
167
|
+
# If still not found, try the direct environment variable name
|
168
|
+
if raw_value is None:
|
169
|
+
raw_value = os.environ.get(env_name)
|
170
|
+
|
171
|
+
# If we found a value, process it
|
116
172
|
if raw_value:
|
117
173
|
# Check if value is already decoded, use as-is; otherwise decode it
|
118
174
|
if (secret_key == "TF_API_KEY" and ".atlasv1." in raw_value) or \
|
@@ -126,6 +182,7 @@ def _get_env_secrets() -> Dict[str, Optional[str]]:
|
|
126
182
|
env_secrets[secret_key] = _decode_b64(raw_value)
|
127
183
|
else:
|
128
184
|
env_secrets[secret_key] = None
|
185
|
+
|
129
186
|
return env_secrets
|
130
187
|
|
131
188
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Shell Tools specific configuration
|
2
|
+
# Inherits common settings from src/diagram_to_iac/config.yaml
|
3
|
+
# Only tool-specific settings and overrides are defined here
|
4
|
+
|
5
|
+
shell_executor:
|
6
|
+
# Allowed binaries for shell execution (security whitelist)
|
7
|
+
allowed_binaries: ["git", "bash", "sh", "gh", "terraform", "tfsec", "ls", "find", "wc"]
|
8
|
+
|
9
|
+
# Maximum output size before truncation (bytes)
|
10
|
+
max_output_size: 8192
|
11
|
+
|
12
|
+
# Security and path validation settings
|
13
|
+
allow_relative_paths: true
|
14
|
+
restrict_to_workspace: true
|
15
|
+
|
16
|
+
# Logging configuration (specific to shell tools)
|
17
|
+
enable_detailed_logging: true
|
18
|
+
log_command_execution: true
|
19
|
+
log_output_truncation: true
|
20
|
+
|
21
|
+
# Error messages for consistent user feedback
|
22
|
+
error_messages:
|
23
|
+
binary_not_allowed: "Shell executor: Binary '{binary}' is not in the allowed list."
|
24
|
+
invalid_workspace_path: "Shell executor: Path '{path}' is outside the allowed workspace."
|
25
|
+
command_timeout: "Shell executor: Command timed out after {timeout} seconds."
|
26
|
+
execution_failed: "Shell executor: Command failed with exit code {exit_code}."
|
27
|
+
output_truncated: "Shell executor: Output truncated to {size} bytes."
|
28
|
+
|
29
|
+
# Success messages for operation feedback
|
30
|
+
success_messages:
|
31
|
+
command_executed: "Shell executor: Command completed successfully in {duration:.2f}s."
|
32
|
+
output_captured: "Shell executor: Captured {size} bytes of output."
|
33
|
+
|
34
|
+
# Development and testing overrides
|
35
|
+
development:
|
36
|
+
# For local development, allow broader workspace access
|
37
|
+
local_workspace_base: "/home/vindpro/Documents/projects/diagram-to-iac"
|
38
|
+
# Extended timeout for development operations
|
39
|
+
extended_timeout: 120
|
40
|
+
# Additional dev binaries (can be enabled for local testing)
|
41
|
+
dev_binaries: ["ls", "pwd", "echo", "cat", "grep"]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Terraform Tools specific configuration
|
2
|
+
# Inherits common settings from src/diagram_to_iac/config.yaml
|
3
|
+
# Only tool-specific settings and overrides are defined here
|
4
|
+
|
5
|
+
terraform_executor:
|
6
|
+
# Allowed binaries for terraform execution (security whitelist)
|
7
|
+
allowed_binaries: ["terraform", "git", "bash", "sh"]
|
8
|
+
|
9
|
+
# Terraform-specific settings
|
10
|
+
default_plan_file: "plan.tfplan"
|
11
|
+
default_auto_approve: true
|
12
|
+
|
13
|
+
# Path validation settings
|
14
|
+
restrict_to_workspace: true
|
15
|
+
|
16
|
+
# Terraform-specific logging configuration
|
17
|
+
enable_detailed_logging: true
|
18
|
+
|
19
|
+
# Memory integration
|
20
|
+
store_operations_in_memory: true
|
21
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: diagram-to-iac
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.5.0
|
4
4
|
Summary: Convert architecture diagrams into IaC modules
|
5
5
|
Author-email: vindpro <admin@vindpro.com>
|
6
6
|
Description-Content-Type: text/markdown
|
@@ -9,15 +9,21 @@ Requires-Dist: google_api_python_client==2.174.0
|
|
9
9
|
Requires-Dist: langchain_anthropic==0.3.16
|
10
10
|
Requires-Dist: langchain-core<1.0.0,>=0.3.62
|
11
11
|
Requires-Dist: langchain_google_genai==2.1.5
|
12
|
-
Requires-Dist: langchain_openai==0.3.
|
13
|
-
Requires-Dist: langgraph==0.
|
14
|
-
Requires-Dist: openai==1.92.
|
12
|
+
Requires-Dist: langchain_openai==0.3.27
|
13
|
+
Requires-Dist: langgraph==0.5.0
|
14
|
+
Requires-Dist: openai==1.92.3
|
15
15
|
Requires-Dist: protobuf>=5.27.0
|
16
16
|
Requires-Dist: pydantic==2.11.7
|
17
17
|
Requires-Dist: PyYAML==6.0.2
|
18
18
|
Requires-Dist: Requests==2.32.4
|
19
19
|
Requires-Dist: typing_extensions==4.14.0
|
20
20
|
Requires-Dist: GitPython<4.0,>=3.1
|
21
|
+
Provides-Extra: test
|
22
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
23
|
+
Requires-Dist: pytest-cov>=4.0; extra == "test"
|
24
|
+
Requires-Dist: pytest-mock>=3.10; extra == "test"
|
25
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "test"
|
26
|
+
Requires-Dist: pexpect>=4.8; extra == "test"
|
21
27
|
|
22
28
|
# diagram-to-iac
|
23
29
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
diagram_to_iac/__init__.py,sha256=gQanRC5O_7AMB-NQFEEd-MU0GICa-dBsgvcJgquKBfs,1427
|
2
2
|
diagram_to_iac/cli.py,sha256=uumG1frF42eCkdLIZxyxQB1x6lDwtG-qKL4vcHnLLXY,400
|
3
|
+
diagram_to_iac/config.yaml,sha256=0DMksgsQt32W3K1DkFXtweK1E11VxJwj1E9-IJCKUUw,7459
|
3
4
|
diagram_to_iac/r2d.py,sha256=I7XSuUtu8TdvAhK4tCMLc3U_3ZtP7DJGfq168aeI3Mk,13208
|
4
5
|
diagram_to_iac/actions/__init__.py,sha256=P1CjjY4FYUA0Tcx8FQNLYYSI9fhv8yKd_TmRGtmhW50,229
|
5
6
|
diagram_to_iac/actions/git_entry.py,sha256=mhY6gYquUPVvyvnTC2S90z_uXEe1asqWLoi1989aB_Q,5403
|
@@ -8,13 +9,17 @@ diagram_to_iac/actions/terraform_agent_entry.py,sha256=gKkX4fIRdBDZpwPQO_v2t1SSO
|
|
8
9
|
diagram_to_iac/agents/__init__.py,sha256=GHInKSPq56ZPYSKsyti6_wk82dhn2hOqfxNHkZZOj_0,735
|
9
10
|
diagram_to_iac/agents/demonstrator_langgraph/__init__.py,sha256=nghMYMEEarfkR0V6AH1fDCV-mXBLnmFP2sO4OPxJ4cI,371
|
10
11
|
diagram_to_iac/agents/demonstrator_langgraph/agent.py,sha256=9ZH2H5iAB2DfMhCr-OzImVZlwoeXIP8RKl6_VG47W2I,35349
|
12
|
+
diagram_to_iac/agents/demonstrator_langgraph/config.yaml,sha256=T1nMi9AQwZxdIWU6NWxttl9CcyEf_Pu6_F-_zCjdVUc,2050
|
11
13
|
diagram_to_iac/agents/git_langgraph/__init__.py,sha256=x6nCnOu-Vcl-qVqW1swhdaE_sQqUSvEUUtWk4eePBUo,295
|
12
14
|
diagram_to_iac/agents/git_langgraph/agent.py,sha256=_lGwyTTgTsS4ZtaQLCceGJa5zeLvux_Hqda1-fqAgXg,49288
|
15
|
+
diagram_to_iac/agents/git_langgraph/config.yaml,sha256=yjxIsD5b5TushF-Yc3iSVJl1fK4GuhErQ0tWRHdkQYc,3690
|
13
16
|
diagram_to_iac/agents/git_langgraph/pr.py,sha256=qXopN5XAF1DIac5vbH-QasihkuAiWmC9JY8pLYlm-sQ,8601
|
14
17
|
diagram_to_iac/agents/hello_langgraph/__init__.py,sha256=lviuDAPJezmpaXR-H7JxfIT9wvg1xO2t6JLyeKSSx0Y,266
|
15
18
|
diagram_to_iac/agents/hello_langgraph/agent.py,sha256=R49yfFGxqMPBBu36ztDH9lBE_-s7VFyRB33gnNSXxek,33777
|
19
|
+
diagram_to_iac/agents/hello_langgraph/config.yaml,sha256=PCOwG9FrbrZdtnc7zM3D43jP-TjudW656_qAz-G_lH0,227
|
16
20
|
diagram_to_iac/agents/policy_agent/__init__.py,sha256=E6QEyIpSHh0PMRNnM0dXuYtz2HZdCJaY5W7UbEwPZBA,380
|
17
21
|
diagram_to_iac/agents/policy_agent/agent.py,sha256=dJLX3q2sYmwUGjs_qQOAlAvTfkEEYUalNCnBz1eeaBw,22296
|
22
|
+
diagram_to_iac/agents/policy_agent/config.yaml,sha256=VmNucLT1JXBSh2FJIeJfAW740AvHAoH-sAGpbjUiYCM,1333
|
18
23
|
diagram_to_iac/agents/policy_agent/integration_example.py,sha256=LtOGshT0VL6yuu5p8UtJ5xqKNweRsLqeyCZK18dnwBA,6703
|
19
24
|
diagram_to_iac/agents/policy_agent/tools/__init__.py,sha256=C9ez49BmMiaAlYs_QrtC0ypMLm1S-Sf9RCRI40-KuCA,282
|
20
25
|
diagram_to_iac/agents/policy_agent/tools/tfsec_tool.py,sha256=YYCRhwVLegeCzJrbah3BYhpKwYPh7PtDxB3kYW8qt10,10116
|
@@ -23,6 +28,7 @@ diagram_to_iac/agents/shell_langgraph/agent.py,sha256=dZWzjVQ9oX_BtNHQ1Zrzy2oQpu
|
|
23
28
|
diagram_to_iac/agents/shell_langgraph/detector.py,sha256=wLw0uDP_V2m1z6SRk7QNCzoUMYCfXwu3DNg8EWue9yk,1493
|
24
29
|
diagram_to_iac/agents/supervisor_langgraph/__init__.py,sha256=iLN60d20cqoXOLyuLvJkiwrzapE84em222Tnyndq2dc,385
|
25
30
|
diagram_to_iac/agents/supervisor_langgraph/agent.py,sha256=1qfgYSQQx1JNgN9ORFCl35NrklRbN7ZcUdP5AbGBsGo,101342
|
31
|
+
diagram_to_iac/agents/supervisor_langgraph/config.yaml,sha256=tdItteHrgTWU3xeHiZ9DVblO5j0G_2Wo63nb-wG8eIo,2334
|
26
32
|
diagram_to_iac/agents/supervisor_langgraph/demonstrator.py,sha256=OT-bElEyLZBedzcc5DtZnp1yhjYVjx4jRzt52f5SoSU,803
|
27
33
|
diagram_to_iac/agents/supervisor_langgraph/github_listener.py,sha256=Ko9dOnS9CUqbjTogEyhEmVhkiaW8OiwLzX6k18lSrac,16377
|
28
34
|
diagram_to_iac/agents/supervisor_langgraph/guards.py,sha256=XzBgjXnwbOgLkGm7AqXX4tQdGBerq_6pKvduKPqIwF0,720
|
@@ -30,25 +36,29 @@ diagram_to_iac/agents/supervisor_langgraph/pat_loop.py,sha256=feY8ZPGQxqkUuHOMSd
|
|
30
36
|
diagram_to_iac/agents/supervisor_langgraph/router.py,sha256=7hZXXEmtvG__w7UAaOhoPaHdubUv-oMKbQdMTMXk-qY,276
|
31
37
|
diagram_to_iac/agents/terraform_langgraph/__init__.py,sha256=N4_cTgk1wNZMS9WU5xZMEm6Dt5GiJ2b0iLx-QUhJd10,390
|
32
38
|
diagram_to_iac/agents/terraform_langgraph/agent.py,sha256=lDaRCLcqShZiUGN25R-T94JTCLYaz4UgT_di3tDA0nE,50593
|
39
|
+
diagram_to_iac/agents/terraform_langgraph/config.yaml,sha256=_jZ0hEegZcXRkm3pDwkPzZkOEi4Gt8ONYwsoFPNc5FQ,643
|
33
40
|
diagram_to_iac/agents/terraform_langgraph/parser.py,sha256=J56CPlpIEIPuDHeAOL3sz4TiIgqLi7raPlX7jwFrAms,2039
|
34
41
|
diagram_to_iac/core/__init__.py,sha256=VjXPYLIS2SAPIDniBkeA2EDK0VHJvdaKIC8dzVneaTM,140
|
35
42
|
diagram_to_iac/core/agent_base.py,sha256=DjZjcfzDpEhfIOki00XwQ-4lPli3OBcQ_7RNKsT7JSI,505
|
36
|
-
diagram_to_iac/core/config_loader.py,sha256=
|
37
|
-
diagram_to_iac/core/enhanced_memory.py,sha256=
|
43
|
+
diagram_to_iac/core/config_loader.py,sha256=6WWOp6G7_xYUhm1x62sVa-7kFlCthcthbppmeGz1YsM,9276
|
44
|
+
diagram_to_iac/core/enhanced_memory.py,sha256=fJ8r-MREZRnm6Rg01CDCicMEx-dDxDEjJgrk8rnVc5Y,11761
|
38
45
|
diagram_to_iac/core/errors.py,sha256=gZwZocnIcBlS4YccIBdjG8XztRCtMe4Cu6KWxLzebDM,115
|
39
46
|
diagram_to_iac/core/issue_tracker.py,sha256=0eo289hn94yCoFCkLaYiDOIJBjk33i2dk6eLeYe_9YE,1659
|
40
47
|
diagram_to_iac/core/memory.py,sha256=P9URX8m2nab65ZPF36uf6Z9hEXQGXrjrXa8dPXG7pm8,4444
|
41
|
-
diagram_to_iac/core/registry.py,sha256=
|
48
|
+
diagram_to_iac/core/registry.py,sha256=ibdMz68W7qkwF0dprt4ni5pekgJfAPuRgL85uRU7wHY,26632
|
49
|
+
diagram_to_iac/core/test_config.py,sha256=hktJ2NcRK2i24xinN4slHpH2-WV8w8PoMXgJnDYeCtQ,3467
|
42
50
|
diagram_to_iac/services/__init__.py,sha256=I5R8g7vYX4tCldRf1Jf9vEhm5mylc-MfFicqLnY6a3E,238
|
43
51
|
diagram_to_iac/services/commenter.py,sha256=iXvHXOeih64FbE34PuGPk6fhI4RmC62ZSVtFwmMqiOA,22146
|
44
52
|
diagram_to_iac/services/observability.py,sha256=yxbnjMc4TO1SM8RZZMHf2E8uVOLpxFhiTjsTkymDi6Y,1856
|
45
53
|
diagram_to_iac/services/step_summary.py,sha256=g3MuMZ51IDubI0oWcF7qMvseNgDS6D90AsKK_1s5xDQ,2808
|
54
|
+
diagram_to_iac/templates/issue_frontmatter.yml,sha256=qjyjUT8jszRIbiX6wmACfhzF-4yTvY1cRtY371o4Ung,7012
|
46
55
|
diagram_to_iac/tools/__init__.py,sha256=F2pcKhoPP5KDeQIGcqKXD1J30KFKc9qxMw1jxzrs9qY,434
|
47
|
-
diagram_to_iac/tools/api_utils.py,sha256=
|
48
|
-
diagram_to_iac/tools/sec_utils.py,sha256=
|
56
|
+
diagram_to_iac/tools/api_utils.py,sha256=c3nOK3eZdUuik5IVvMyGIEG-3oILnyOVd-RubtPdpgE,9616
|
57
|
+
diagram_to_iac/tools/sec_utils.py,sha256=Zzb-I3_qZblv0nIEm4TO0xQCga3Phq44SOGx1ga_wOc,12463
|
49
58
|
diagram_to_iac/tools/text_utils.py,sha256=cnwOXWndd1QAlZC4zOO9jtF3_j4xozDLUTfzfJE9wWQ,9959
|
50
59
|
diagram_to_iac/tools/git/__init__.py,sha256=1V3_Kg_KzQ6er60N-1hqQeigkV8c4AvYq-R60_xmQ4o,1316
|
51
60
|
diagram_to_iac/tools/git/git.py,sha256=0NYz9NqQWf-5YTX7R3nBPyLmzvih-jhd0gYY8KZDmTM,46501
|
61
|
+
diagram_to_iac/tools/git/git_config.yaml,sha256=ekww9EEZigEfZBv-HNSEYP__SDT61yOdBQ0u-Lhquv0,4272
|
52
62
|
diagram_to_iac/tools/hello/__init__.py,sha256=f6GpkiQxvuGaRMm34yQilGACxUI4c5edJQTDjZtskjQ,891
|
53
63
|
diagram_to_iac/tools/hello/cal_utils.py,sha256=B-0iOJHNL1IgYPlWUdrAwEf1r9LUKBAnGyx1xQz05ZE,1507
|
54
64
|
diagram_to_iac/tools/hello/text_utils.py,sha256=ZaVQYw6GVqaq9EDTQfG3gTAudeN8CuFUUb7IETZhUCA,3952
|
@@ -58,12 +68,14 @@ diagram_to_iac/tools/llm_utils/base_driver.py,sha256=sDUxk6_iNn3WU_HyRz2hW3YGTn8
|
|
58
68
|
diagram_to_iac/tools/llm_utils/gemini_driver.py,sha256=VO1mJ3o10oSFo5hTBs6h8TJsXyAuah4FRr6Ua-9aNYc,3794
|
59
69
|
diagram_to_iac/tools/llm_utils/grok_driver.py,sha256=hcq4m6ZEgjVsLXaaGlW5SWHEqyjY4KUDy88xSZFUa6Y,2955
|
60
70
|
diagram_to_iac/tools/llm_utils/openai_driver.py,sha256=ZqzXEYEutwqRw3qWx-GH85Mj2afxK4NlhCOMq_MabqQ,3962
|
61
|
-
diagram_to_iac/tools/llm_utils/router.py,sha256=
|
71
|
+
diagram_to_iac/tools/llm_utils/router.py,sha256=ga8xfmPMl_SGINDwazeAAFYTAx9L_IQcVV5AdvqD0dQ,22643
|
62
72
|
diagram_to_iac/tools/shell/__init__.py,sha256=6UZjBcnbPabA6Qy7t4j-dCi3S2sE6sB2bTE9PIL98bA,292
|
63
73
|
diagram_to_iac/tools/shell/shell.py,sha256=ZOJ7Vo3l_R2Gm6Ml2FL0RX__-C_JOsUrLJVvBMwAy9E,21122
|
74
|
+
diagram_to_iac/tools/shell/shell_config.yaml,sha256=9mV1mpOD9mwOx50TXF-ACafeJmBSZaqPo4v-TQxB5U4,1722
|
64
75
|
diagram_to_iac/tools/tf/terraform.py,sha256=j1boWRo6JKpNGf1OwnWoWboO0gMYTizCOHDSxozoFZw,37343
|
65
|
-
diagram_to_iac
|
66
|
-
diagram_to_iac-1.
|
67
|
-
diagram_to_iac-1.
|
68
|
-
diagram_to_iac-1.
|
69
|
-
diagram_to_iac-1.
|
76
|
+
diagram_to_iac/tools/tf/terraform_config.yaml,sha256=Mj5rp5hwLLZ3VmKIqwnjoKvPlaA20OX5plH40DfGG7k,610
|
77
|
+
diagram_to_iac-1.5.0.dist-info/METADATA,sha256=pa4hTMPN6O46XRq028RNvRKZEiR9deqiFhawCUIPwws,10689
|
78
|
+
diagram_to_iac-1.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
79
|
+
diagram_to_iac-1.5.0.dist-info/entry_points.txt,sha256=DfGCnmgWWGHtQpqU8VqcUWs5k_be-bfO67z1vOuTitA,277
|
80
|
+
diagram_to_iac-1.5.0.dist-info/top_level.txt,sha256=k1cV0YODiCUU46qlmbQaquMcbMXhNm05NZLxsinDUBA,15
|
81
|
+
diagram_to_iac-1.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|