diagram-to-iac 1.5.0__tar.gz → 1.7.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 (88) hide show
  1. {diagram_to_iac-1.5.0/src/diagram_to_iac.egg-info → diagram_to_iac-1.7.0}/PKG-INFO +2 -2
  2. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/pyproject.toml +2 -2
  3. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/issue_tracker.py +13 -2
  4. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/memory.py +9 -6
  5. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/services/observability.py +12 -1
  6. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0/src/diagram_to_iac.egg-info}/PKG-INFO +2 -2
  7. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac.egg-info/requires.txt +1 -1
  8. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/MANIFEST.in +0 -0
  9. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/README.md +0 -0
  10. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/setup.cfg +0 -0
  11. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/__init__.py +0 -0
  12. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/actions/__init__.py +0 -0
  13. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/actions/git_entry.py +0 -0
  14. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/actions/supervisor_entry.py +0 -0
  15. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/actions/terraform_agent_entry.py +0 -0
  16. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/__init__.py +0 -0
  17. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/demonstrator_langgraph/__init__.py +0 -0
  18. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/demonstrator_langgraph/agent.py +0 -0
  19. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/demonstrator_langgraph/config.yaml +0 -0
  20. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/git_langgraph/__init__.py +0 -0
  21. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/git_langgraph/agent.py +0 -0
  22. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/git_langgraph/config.yaml +0 -0
  23. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/git_langgraph/pr.py +0 -0
  24. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/hello_langgraph/__init__.py +0 -0
  25. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/hello_langgraph/agent.py +0 -0
  26. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/hello_langgraph/config.yaml +0 -0
  27. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/__init__.py +0 -0
  28. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/agent.py +0 -0
  29. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/config.yaml +0 -0
  30. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/integration_example.py +0 -0
  31. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/tools/__init__.py +0 -0
  32. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/policy_agent/tools/tfsec_tool.py +0 -0
  33. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/shell_langgraph/__init__.py +0 -0
  34. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/shell_langgraph/agent.py +0 -0
  35. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/shell_langgraph/detector.py +0 -0
  36. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/__init__.py +0 -0
  37. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/agent.py +0 -0
  38. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/config.yaml +0 -0
  39. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/demonstrator.py +0 -0
  40. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/github_listener.py +0 -0
  41. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/guards.py +0 -0
  42. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/pat_loop.py +0 -0
  43. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/supervisor_langgraph/router.py +0 -0
  44. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/terraform_langgraph/__init__.py +0 -0
  45. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/terraform_langgraph/agent.py +0 -0
  46. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/terraform_langgraph/config.yaml +0 -0
  47. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/agents/terraform_langgraph/parser.py +0 -0
  48. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/cli.py +0 -0
  49. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/config.yaml +0 -0
  50. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/__init__.py +0 -0
  51. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/agent_base.py +0 -0
  52. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/config_loader.py +0 -0
  53. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/enhanced_memory.py +0 -0
  54. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/errors.py +0 -0
  55. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/registry.py +0 -0
  56. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/core/test_config.py +0 -0
  57. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/r2d.py +0 -0
  58. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/services/__init__.py +0 -0
  59. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/services/commenter.py +0 -0
  60. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/services/step_summary.py +0 -0
  61. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/templates/issue_frontmatter.yml +0 -0
  62. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/__init__.py +0 -0
  63. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/api_utils.py +0 -0
  64. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/git/__init__.py +0 -0
  65. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/git/git.py +0 -0
  66. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/git/git_config.yaml +0 -0
  67. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/hello/__init__.py +0 -0
  68. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/hello/cal_utils.py +0 -0
  69. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/hello/text_utils.py +0 -0
  70. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/__init__.py +0 -0
  71. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/anthropic_driver.py +0 -0
  72. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/base_driver.py +0 -0
  73. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/gemini_driver.py +0 -0
  74. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/grok_driver.py +0 -0
  75. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/openai_driver.py +0 -0
  76. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/llm_utils/router.py +0 -0
  77. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/sec_utils.py +0 -0
  78. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/shell/__init__.py +0 -0
  79. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/shell/shell.py +0 -0
  80. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/shell/shell_config.yaml +0 -0
  81. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/text_utils.py +0 -0
  82. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/tf/terraform.py +0 -0
  83. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac/tools/tf/terraform_config.yaml +0 -0
  84. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac.egg-info/SOURCES.txt +0 -0
  85. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac.egg-info/dependency_links.txt +0 -0
  86. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac.egg-info/entry_points.txt +0 -0
  87. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/src/diagram_to_iac.egg-info/top_level.txt +0 -0
  88. {diagram_to_iac-1.5.0 → diagram_to_iac-1.7.0}/tests/test_devops_in_a_box.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diagram-to-iac
3
- Version: 1.5.0
3
+ Version: 1.7.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
@@ -11,7 +11,7 @@ Requires-Dist: langchain-core<1.0.0,>=0.3.62
11
11
  Requires-Dist: langchain_google_genai==2.1.5
12
12
  Requires-Dist: langchain_openai==0.3.27
13
13
  Requires-Dist: langgraph==0.5.0
14
- Requires-Dist: openai==1.92.3
14
+ Requires-Dist: openai==1.93.0
15
15
  Requires-Dist: protobuf>=5.27.0
16
16
  Requires-Dist: pydantic==2.11.7
17
17
  Requires-Dist: PyYAML==6.0.2
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "diagram-to-iac"
7
- version = "1.5.0"
7
+ version = "1.7.0"
8
8
  description = "Convert architecture diagrams into IaC modules"
9
9
  readme = "README.md"
10
10
  authors = [{ name="vindpro", email="admin@vindpro.com" }]
11
- dependencies = ["anthropic==0.55.0", "google_api_python_client==2.174.0", "langchain_anthropic==0.3.16", "langchain-core>=0.3.62,<1.0.0", "langchain_google_genai==2.1.5", "langchain_openai==0.3.27", "langgraph==0.5.0", "openai==1.92.3", "protobuf>=5.27.0", "pydantic==2.11.7", "PyYAML==6.0.2", "Requests==2.32.4", "typing_extensions==4.14.0", "GitPython>=3.1,<4.0"] # ← always overwritten by update_deps.py
11
+ dependencies = ["anthropic==0.55.0", "google_api_python_client==2.174.0", "langchain_anthropic==0.3.16", "langchain-core>=0.3.62,<1.0.0", "langchain_google_genai==2.1.5", "langchain_openai==0.3.27", "langgraph==0.5.0", "openai==1.93.0", "protobuf>=5.27.0", "pydantic==2.11.7", "PyYAML==6.0.2", "Requests==2.32.4", "typing_extensions==4.14.0", "GitPython>=3.1,<4.0"] # ← always overwritten by update_deps.py
12
12
 
13
13
  [project.optional-dependencies]
14
14
  test = ["pytest>=7.0", "pytest-cov>=4.0", "pytest-mock>=3.10", "pytest-asyncio>=0.21", "pexpect>=4.8"]
@@ -1,4 +1,5 @@
1
1
  import json
2
+ import os
2
3
  from pathlib import Path
3
4
  from typing import Dict, Optional
4
5
 
@@ -7,8 +8,18 @@ class IssueTracker:
7
8
 
8
9
  def __init__(self, file_path: Optional[str] = None):
9
10
  if file_path is None:
10
- base_dir = Path(__file__).resolve().parents[3]
11
- file_path = base_dir / "data" / "db" / "issue_tracker.json"
11
+ # Check environment variable first
12
+ if os.environ.get('ISSUE_TRACKER_FILE'):
13
+ file_path = os.environ['ISSUE_TRACKER_FILE']
14
+ else:
15
+ # Check for workspace-based path first (for containers)
16
+ workspace_base = os.environ.get('WORKSPACE_BASE', '/workspace')
17
+ if os.path.exists(workspace_base):
18
+ base_dir = Path(workspace_base)
19
+ else:
20
+ # Fallback to package-relative path
21
+ base_dir = Path(__file__).resolve().parents[3]
22
+ file_path = base_dir / "data" / "db" / "issue_tracker.json"
12
23
  self.file_path = Path(file_path)
13
24
  self._table: Dict[str, Dict[str, int]] = {}
14
25
  self._load()
@@ -87,12 +87,15 @@ class EnhancedMemory(Memory):
87
87
 
88
88
  # Default path for the persistent agent state JSON file. Allows override via
89
89
  # `AGENT_STATE_FILE` environment variable for testing.
90
- _DEFAULT_AGENT_STATE_PATH = (
91
- Path(__file__).resolve().parents[3]
92
- / "state"
93
- / ".agent_state"
94
- / "agent_state.json"
95
- )
90
+ def _get_default_agent_state_path():
91
+ """Get the default agent state path, checking workspace first."""
92
+ workspace_base = os.environ.get('WORKSPACE_BASE', '/workspace')
93
+ if os.path.exists(workspace_base):
94
+ return Path(workspace_base) / "data" / "state" / "agent_state.json"
95
+ else:
96
+ return Path(__file__).resolve().parents[3] / "state" / ".agent_state" / "agent_state.json"
97
+
98
+ _DEFAULT_AGENT_STATE_PATH = _get_default_agent_state_path()
96
99
  AGENT_STATE_PATH = Path(os.environ.get("AGENT_STATE_FILE", _DEFAULT_AGENT_STATE_PATH))
97
100
 
98
101
 
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ import os
4
5
  from datetime import datetime, timezone
5
6
  from pathlib import Path
6
7
  import threading
@@ -11,7 +12,17 @@ class LogBus:
11
12
  """Simple JSONL logging service."""
12
13
 
13
14
  def __init__(self, log_dir: str | Path | None = None) -> None:
14
- self.log_dir = Path(log_dir) if log_dir else Path(__file__).resolve().parents[3] / "logs"
15
+ if log_dir:
16
+ self.log_dir = Path(log_dir)
17
+ else:
18
+ # Check for workspace-based path first (for containers)
19
+ workspace_base = os.environ.get('WORKSPACE_BASE', '/workspace')
20
+ if os.path.exists(workspace_base):
21
+ self.log_dir = Path(workspace_base) / "logs"
22
+ else:
23
+ # Fallback to package-relative path
24
+ self.log_dir = Path(__file__).resolve().parents[3] / "logs"
25
+
15
26
  self.log_dir.mkdir(parents=True, exist_ok=True)
16
27
  timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
17
28
  self.log_path = self.log_dir / f"run-{timestamp}.jsonl"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diagram-to-iac
3
- Version: 1.5.0
3
+ Version: 1.7.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
@@ -11,7 +11,7 @@ Requires-Dist: langchain-core<1.0.0,>=0.3.62
11
11
  Requires-Dist: langchain_google_genai==2.1.5
12
12
  Requires-Dist: langchain_openai==0.3.27
13
13
  Requires-Dist: langgraph==0.5.0
14
- Requires-Dist: openai==1.92.3
14
+ Requires-Dist: openai==1.93.0
15
15
  Requires-Dist: protobuf>=5.27.0
16
16
  Requires-Dist: pydantic==2.11.7
17
17
  Requires-Dist: PyYAML==6.0.2
@@ -5,7 +5,7 @@ langchain-core<1.0.0,>=0.3.62
5
5
  langchain_google_genai==2.1.5
6
6
  langchain_openai==0.3.27
7
7
  langgraph==0.5.0
8
- openai==1.92.3
8
+ openai==1.93.0
9
9
  protobuf>=5.27.0
10
10
  pydantic==2.11.7
11
11
  PyYAML==6.0.2
File without changes
File without changes