ref-agents 1.0.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.
Files changed (175) hide show
  1. ref_agents/__init__.py +9 -0
  2. ref_agents/api_keys.json.example +8 -0
  3. ref_agents/auth.py +129 -0
  4. ref_agents/codemap/..md +62 -0
  5. ref_agents/codemap/CODE_MAP.md +37 -0
  6. ref_agents/codemap/core.md +43 -0
  7. ref_agents/codemap/models.md +43 -0
  8. ref_agents/codemap/prompts.md +40 -0
  9. ref_agents/codemap/security.md +45 -0
  10. ref_agents/codemap/tools.md +94 -0
  11. ref_agents/codemap/tools_browser.md +44 -0
  12. ref_agents/codemap/utils.md +42 -0
  13. ref_agents/codemap/workflow.md +42 -0
  14. ref_agents/config/ai_patterns.yaml +101 -0
  15. ref_agents/config/frameworks/angular.yaml +104 -0
  16. ref_agents/config/frameworks/aspnet.yaml +84 -0
  17. ref_agents/config/frameworks/ef_core.yaml +81 -0
  18. ref_agents/config/frameworks/react.yaml +111 -0
  19. ref_agents/config/frameworks/spring_boot.yaml +117 -0
  20. ref_agents/config/languages/csharp.yaml +153 -0
  21. ref_agents/config/languages/java.yaml +188 -0
  22. ref_agents/config/languages/javascript.yaml +172 -0
  23. ref_agents/config/languages/python.yaml +153 -0
  24. ref_agents/config/languages/typescript.yaml +193 -0
  25. ref_agents/constants.py +553 -0
  26. ref_agents/core/__init__.py +15 -0
  27. ref_agents/core/config_loader.py +160 -0
  28. ref_agents/core/config_models.py +167 -0
  29. ref_agents/core/config_parsing.py +84 -0
  30. ref_agents/core/language_detector.py +388 -0
  31. ref_agents/core/validation_models.py +66 -0
  32. ref_agents/core/validation_primitives.py +176 -0
  33. ref_agents/errors.py +34 -0
  34. ref_agents/license_client.py +247 -0
  35. ref_agents/models/__init__.py +22 -0
  36. ref_agents/models/gherkin.py +45 -0
  37. ref_agents/models/hierarchy.py +80 -0
  38. ref_agents/models/invest.py +59 -0
  39. ref_agents/models/version.py +49 -0
  40. ref_agents/prompts/__init__.py +9 -0
  41. ref_agents/prompts/start_agent.py +772 -0
  42. ref_agents/rules/architecture/backend_patterns.md +43 -0
  43. ref_agents/rules/architecture/diagramming.md +100 -0
  44. ref_agents/rules/architecture/frontend_patterns.md +40 -0
  45. ref_agents/rules/architecture/impact_analysis.md +129 -0
  46. ref_agents/rules/architecture/migration_strategy.md +208 -0
  47. ref_agents/rules/architecture/regression_protocol.md +77 -0
  48. ref_agents/rules/architecture/system_design.md +97 -0
  49. ref_agents/rules/common/codemap_standard.md +97 -0
  50. ref_agents/rules/common/core_protocol.md +59 -0
  51. ref_agents/rules/common/prompt_engineering.md +294 -0
  52. ref_agents/rules/development/debugging.md +32 -0
  53. ref_agents/rules/development/implementation.md +205 -0
  54. ref_agents/rules/operations/completion.md +119 -0
  55. ref_agents/rules/operations/cutover_protocol.md +218 -0
  56. ref_agents/rules/operations/discovery.md +179 -0
  57. ref_agents/rules/operations/fix_workflow.md +87 -0
  58. ref_agents/rules/operations/forensics.md +278 -0
  59. ref_agents/rules/operations/platform.md +263 -0
  60. ref_agents/rules/operations/synchronous_flow.md +25 -0
  61. ref_agents/rules/product/ac_validation.md +25 -0
  62. ref_agents/rules/product/brainstorming.md +27 -0
  63. ref_agents/rules/product/ref_flow.md +101 -0
  64. ref_agents/rules/product/requirements_std.md +114 -0
  65. ref_agents/rules/product/spec_writing.md +235 -0
  66. ref_agents/rules/product/strategy.md +96 -0
  67. ref_agents/rules/quality/documentation_standards.md +46 -0
  68. ref_agents/rules/quality/parity_testing.md +234 -0
  69. ref_agents/rules/quality/project_documentation.md +56 -0
  70. ref_agents/rules/quality/qa_lead.md +111 -0
  71. ref_agents/rules/quality/test_design.md +146 -0
  72. ref_agents/rules/quality/testing_standards.md +293 -0
  73. ref_agents/rules/review/pr_review.md +116 -0
  74. ref_agents/rules/security/security_audit.md +83 -0
  75. ref_agents/security/__init__.py +22 -0
  76. ref_agents/security/dependency_audit.py +188 -0
  77. ref_agents/security/file_audit.py +208 -0
  78. ref_agents/security/network_scan.py +179 -0
  79. ref_agents/security/report_generator.py +313 -0
  80. ref_agents/security/secret_scan.py +252 -0
  81. ref_agents/security/url_scan.py +240 -0
  82. ref_agents/security_scan.py +236 -0
  83. ref_agents/server.py +1586 -0
  84. ref_agents/session.py +100 -0
  85. ref_agents/tool_names.py +55 -0
  86. ref_agents/tools/__init__.py +8 -0
  87. ref_agents/tools/agents_generator.py +315 -0
  88. ref_agents/tools/ai_pattern_detector.py +815 -0
  89. ref_agents/tools/brownfield_populator.py +529 -0
  90. ref_agents/tools/browser/__init__.py +50 -0
  91. ref_agents/tools/browser/evidence_verifier.py +302 -0
  92. ref_agents/tools/browser/execution_logger.py +249 -0
  93. ref_agents/tools/browser/playwright_mcp_client.py +259 -0
  94. ref_agents/tools/browser/screenshot_utils.py +184 -0
  95. ref_agents/tools/browser/test_executor.py +537 -0
  96. ref_agents/tools/code_quality_scanner.py +629 -0
  97. ref_agents/tools/codemap/..md +93 -0
  98. ref_agents/tools/codemap/CODE_MAP.md +30 -0
  99. ref_agents/tools/codemap/browser.md +44 -0
  100. ref_agents/tools/codemap.py +403 -0
  101. ref_agents/tools/codemap_freshness.py +234 -0
  102. ref_agents/tools/comment_smell_scanner.py +346 -0
  103. ref_agents/tools/complexity.py +436 -0
  104. ref_agents/tools/complexity_ast.py +333 -0
  105. ref_agents/tools/compliance.py +246 -0
  106. ref_agents/tools/compliance_remediation.py +846 -0
  107. ref_agents/tools/context_graph.py +839 -0
  108. ref_agents/tools/context_manager.py +550 -0
  109. ref_agents/tools/context_tools.py +121 -0
  110. ref_agents/tools/cross_repo_linker.py +393 -0
  111. ref_agents/tools/dead_code_scanner.py +637 -0
  112. ref_agents/tools/debt_scanner.py +1092 -0
  113. ref_agents/tools/dependency_graph.py +272 -0
  114. ref_agents/tools/discovery_audit.py +372 -0
  115. ref_agents/tools/docs_scanner.py +600 -0
  116. ref_agents/tools/evaluate_gate.py +119 -0
  117. ref_agents/tools/external_detector.py +524 -0
  118. ref_agents/tools/features_generator.py +282 -0
  119. ref_agents/tools/flow_gap_detector.py +373 -0
  120. ref_agents/tools/flow_mapper.py +327 -0
  121. ref_agents/tools/full_suite_runner.py +740 -0
  122. ref_agents/tools/gherkin_parser.py +227 -0
  123. ref_agents/tools/guard_tools.py +139 -0
  124. ref_agents/tools/handoff_tools.py +282 -0
  125. ref_agents/tools/health_scanner.py +1211 -0
  126. ref_agents/tools/hierarchy_manager.py +289 -0
  127. ref_agents/tools/invest_scorer.py +249 -0
  128. ref_agents/tools/jira_confluence_export.py +306 -0
  129. ref_agents/tools/json_output.py +76 -0
  130. ref_agents/tools/migration_mapper.py +946 -0
  131. ref_agents/tools/migration_readiness_scanner.py +209 -0
  132. ref_agents/tools/pattern_learner.py +522 -0
  133. ref_agents/tools/report_utils.py +155 -0
  134. ref_agents/tools/requirements_serializer.py +225 -0
  135. ref_agents/tools/security_audit_tool.py +106 -0
  136. ref_agents/tools/sequencing_engine.py +288 -0
  137. ref_agents/tools/summary_generator.py +275 -0
  138. ref_agents/tools/symbol_resolver.py +306 -0
  139. ref_agents/tools/symbol_smoke_runner.py +336 -0
  140. ref_agents/tools/test_plan_validator.py +189 -0
  141. ref_agents/tools/test_smell_walker.py +902 -0
  142. ref_agents/tools/tier1_fixer.py +502 -0
  143. ref_agents/tools/validators/__init__.py +419 -0
  144. ref_agents/tools/validators/architect.py +268 -0
  145. ref_agents/tools/validators/cutover_engineer.py +167 -0
  146. ref_agents/tools/validators/developer.py +180 -0
  147. ref_agents/tools/validators/discovery.py +150 -0
  148. ref_agents/tools/validators/forensic_engineer.py +191 -0
  149. ref_agents/tools/validators/impact_architect.py +181 -0
  150. ref_agents/tools/validators/migration_planner.py +166 -0
  151. ref_agents/tools/validators/parity_tester.py +155 -0
  152. ref_agents/tools/validators/platform_engineer.py +134 -0
  153. ref_agents/tools/validators/pr_reviewer.py +129 -0
  154. ref_agents/tools/validators/product_manager.py +291 -0
  155. ref_agents/tools/validators/qa_lead.py +172 -0
  156. ref_agents/tools/validators/scrum_master.py +212 -0
  157. ref_agents/tools/validators/security_owner.py +162 -0
  158. ref_agents/tools/validators/specifier.py +134 -0
  159. ref_agents/tools/validators/strategist.py +149 -0
  160. ref_agents/tools/validators/tester.py +121 -0
  161. ref_agents/tools/version_manager.py +202 -0
  162. ref_agents/tools/workflow_tools.py +1549 -0
  163. ref_agents/utils/__init__.py +21 -0
  164. ref_agents/utils/git_utils.py +351 -0
  165. ref_agents/utils/handoff_logger.py +368 -0
  166. ref_agents/utils/ignore_matcher.py +270 -0
  167. ref_agents/workflow/__init__.py +19 -0
  168. ref_agents/workflow/capabilities.py +328 -0
  169. ref_agents/workflow/state_machine.py +708 -0
  170. ref_agents/workflow/transitions.py +658 -0
  171. ref_agents-1.0.0.dist-info/METADATA +365 -0
  172. ref_agents-1.0.0.dist-info/RECORD +175 -0
  173. ref_agents-1.0.0.dist-info/WHEEL +4 -0
  174. ref_agents-1.0.0.dist-info/entry_points.txt +2 -0
  175. ref_agents-1.0.0.dist-info/licenses/LICENSE +115 -0
ref_agents/__init__.py ADDED
@@ -0,0 +1,9 @@
1
+ """REF Agents - AI-Powered SDLC Guidance Layer.
2
+
3
+ Built on Anthropic's Model Context Protocol (MCP) for seamless AI assistant
4
+ integration. Provides agent-based prompts, workflow management, and quality tools.
5
+
6
+ Usage:
7
+ from ref_agents.server import mcp
8
+ mcp.run()
9
+ """
@@ -0,0 +1,8 @@
1
+ {
2
+ "_comment": "API keys for REF-Agents MCP server. Add keys here to grant access.",
3
+ "sk-ref-example-key-1": {
4
+ "user": "admin@example.com",
5
+ "created": "2026-01-17",
6
+ "scopes": ["mcp:access"]
7
+ }
8
+ }
ref_agents/auth.py ADDED
@@ -0,0 +1,129 @@
1
+ """Authentication module for REF-Agents MCP server.
2
+
3
+ Provides API key validation using FastMCP's DebugTokenVerifier.
4
+ Keys loaded from environment variable (cloud) or JSON file (local).
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import json
10
+ import os
11
+ from pathlib import Path
12
+ from typing import TYPE_CHECKING
13
+
14
+ import structlog
15
+
16
+ if TYPE_CHECKING:
17
+ from fastmcp.server.auth.providers.debug import DebugTokenVerifier
18
+
19
+ logger = structlog.get_logger(__name__)
20
+
21
+ # Environment variable for cloud deployment
22
+ ENV_VAR_NAME = "REF_API_KEYS"
23
+ # Default path for local API keys file
24
+ DEFAULT_KEYS_PATH = Path(__file__).parent / "api_keys.json"
25
+
26
+
27
+ def load_api_keys(keys_path: Path | None = None) -> set[str]:
28
+ """Load API keys from environment variable or JSON file.
29
+
30
+ Priority:
31
+ 1. REF_API_KEYS env var (comma-separated keys for cloud)
32
+ 2. JSON file (for local development) - ONLY if REF_ENABLE_AUTH is set.
33
+
34
+ Args:
35
+ keys_path: Path to JSON file. Defaults to api_keys.json in module dir.
36
+
37
+ Returns:
38
+ Set of valid API key strings.
39
+ Empty set if no keys configured (Open Mode).
40
+ """
41
+ # Priority 1: Environment variable (cloud deployment)
42
+ env_keys = os.environ.get(ENV_VAR_NAME)
43
+ if env_keys and env_keys.strip():
44
+ # Support comma-separated keys: "key1,key2,key3"
45
+ keys = {k.strip() for k in env_keys.split(",") if k.strip()}
46
+ if keys:
47
+ logger.info("api_keys_loaded_from_env", count=len(keys))
48
+ return keys
49
+ # Empty env var or no valid keys → Open Mode
50
+ logger.info("auth_open_mode", reason="REF_API_KEYS_empty_or_invalid")
51
+
52
+ # Priority 2: JSON file (local development)
53
+ # Only load from file if explicitly enabled via environment variable
54
+ enable_auth = os.environ.get("REF_ENABLE_AUTH", "").lower() in ("true", "1", "yes")
55
+
56
+ # If not cloud (Priority 1) and not explicitly enabled, return empty (Open Mode)
57
+ if not enable_auth:
58
+ logger.info("auth_open_mode", reason="REF_ENABLE_AUTH_not_set")
59
+ return set()
60
+
61
+ path = keys_path or DEFAULT_KEYS_PATH
62
+ if not path.exists():
63
+ logger.debug("api_keys_file_missing", path=str(path))
64
+ return set()
65
+
66
+ try:
67
+ content = path.read_text(encoding="utf-8")
68
+ data = json.loads(content)
69
+ # Support both formats:
70
+ # Simple list: ["key1", "key2"]
71
+ # Dict with metadata: {"key1": {...}, "key2": {...}}
72
+ if isinstance(data, list):
73
+ keys = set(data)
74
+ else:
75
+ keys = set(data.keys())
76
+ # Filter out comment keys
77
+ keys = {k for k in keys if not k.startswith("_")}
78
+ logger.info("api_keys_loaded_from_file", count=len(keys))
79
+ return keys
80
+ except (json.JSONDecodeError, OSError) as e:
81
+ logger.warning("api_keys_load_failed", error=str(e))
82
+ return set()
83
+
84
+
85
+ def create_api_key_verifier(
86
+ keys_path: Path | None = None,
87
+ ) -> "DebugTokenVerifier | None":
88
+ """Create verifier that validates tokens against configured keys.
89
+
90
+ Args:
91
+ keys_path: Path to JSON file with API keys (optional).
92
+
93
+ Returns:
94
+ DebugTokenVerifier configured for API key validation.
95
+ Passthrough verifier (accepts all tokens) if no keys configured.
96
+ This satisfies FastMCP Cloud's OAuth requirement while maintaining open access.
97
+ """
98
+ from fastmcp.server.auth.providers.debug import DebugTokenVerifier
99
+
100
+ keys = load_api_keys(keys_path)
101
+
102
+ if not keys:
103
+ # No keys configured → Open Mode
104
+ # For FastMCP Cloud compatibility, use passthrough verifier
105
+ # that accepts all tokens (effectively no auth) but exposes OAuth endpoints
106
+ logger.info("auth_open_mode_passthrough", reason="no_api_keys_configured")
107
+
108
+ def passthrough_validate(token: str) -> bool:
109
+ """Accept all tokens (effectively no authentication)."""
110
+ return True
111
+
112
+ return DebugTokenVerifier(
113
+ validate=passthrough_validate,
114
+ client_id="ref-agents-client",
115
+ scopes=["mcp:access"],
116
+ )
117
+
118
+ def validate(token: str) -> bool:
119
+ """Check if token exists in configured keys."""
120
+ is_valid = token in keys
121
+ if not is_valid:
122
+ logger.warning("token_rejected", token_prefix=token[:8] + "...")
123
+ return is_valid
124
+
125
+ return DebugTokenVerifier(
126
+ validate=validate,
127
+ client_id="ref-agents-client",
128
+ scopes=["mcp:access"],
129
+ )
@@ -0,0 +1,62 @@
1
+ # CODE_MAP: `.`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `tools/` | Dir | [Desc] | - |
15
+ | `core/` | Dir | [Desc] | - |
16
+ | `config/` | Dir | [Desc] | - |
17
+ | `security/` | Dir | [Desc] | - |
18
+ | `utils/` | Dir | [Desc] | - |
19
+ | `models/` | Dir | [Desc] | - |
20
+ | `codemap/` | Dir | [Desc] | - |
21
+ | `workflow/` | Dir | [Desc] | - |
22
+ | `rules/` | Dir | [Desc] | - |
23
+ | `prompts/` | Dir | [Desc] | - |
24
+ | `ref-reports/` | Dir | [Desc] | - |
25
+ | `auth.py` | File | [Desc] | - |
26
+ | `api_keys.json` | File | [Desc] | - |
27
+ | `server.py` | File | [Desc] | - |
28
+ | `api_keys.json.example` | File | [Desc] | - |
29
+ | `constants.py` | File | [Desc] | - |
30
+ | `session.py` | File | [Desc] | - |
31
+ | `__init__.py` | File | [Desc] | - |
32
+ | `tool_names.py` | File | [Desc] | - |
33
+ | `security_scan.py` | File | [Desc] | - |
34
+
35
+
36
+ ## Key Classes / Functions
37
+ <!-- REF:MANUAL -->
38
+ | Name | File | Purpose | Dependencies |
39
+ |------|------|---------|--------------|
40
+ | ... | ... | ... | ... |
41
+
42
+
43
+
44
+ ## External Dependencies
45
+ <!-- REF:AUTO -->
46
+ *Auto-detected by external_detector.py*
47
+
48
+ ### Hardcoded External URLs
49
+
50
+ | Domain | File | Line | Notes |
51
+ |--------|------|------|-------|
52
+ | `cdn.jsdelivr.net` | `context_graph.py` | 713 | ⚠️ Consider env var |
53
+
54
+
55
+
56
+ ## Integration Boundaries
57
+ <!-- REF:MANUAL -->
58
+ *Where this module connects to external systems*
59
+
60
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
61
+ |---------------|------------|-----------------|-----------|------------|
62
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,37 @@
1
+ # CODE_MAP: Project Overview
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the overall project purpose]
7
+
8
+
9
+
10
+ ## Package Index
11
+ <!-- REF:AUTO -->
12
+ | Package | Path | Purpose |
13
+ |---------|------|---------|
14
+ | [ref_agents](./..md) | `.` | [Desc] |
15
+ | [core](./core.md) | `core` | [Desc] |
16
+ | [models](./models.md) | `models` | [Desc] |
17
+ | [prompts](./prompts.md) | `prompts` | [Desc] |
18
+ | [security](./security.md) | `security` | [Desc] |
19
+ | [tools](./tools.md) | `tools` | [Desc] |
20
+ | [utils](./utils.md) | `utils` | [Desc] |
21
+ | [workflow](./workflow.md) | `workflow` | [Desc] |
22
+ | [browser](./tools_browser.md) | `tools/browser` | [Desc] |
23
+
24
+
25
+ ## Project Statistics
26
+ <!-- REF:AUTO -->
27
+ - **Total Packages:** 9
28
+ - **Generated:** Auto-updated by discovery
29
+
30
+
31
+ ## Quick Navigation
32
+ <!-- REF:MANUAL -->
33
+ *Add frequently accessed modules here*
34
+
35
+ | Module | Description |
36
+ |--------|-------------|
37
+ | ... | ... |
@@ -0,0 +1,43 @@
1
+ # CODE_MAP: `core`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `config_loader.py` | File | [Desc] | - |
15
+ | `__init__.py` | File | [Desc] | - |
16
+ | `config_models.py` | File | [Desc] | - |
17
+ | `language_detector.py` | File | [Desc] | - |
18
+ | `config_parsing.py` | File | [Desc] | - |
19
+
20
+
21
+ ## Key Classes / Functions
22
+ <!-- REF:MANUAL -->
23
+ | Name | File | Purpose | Dependencies |
24
+ |------|------|---------|--------------|
25
+ | ... | ... | ... | ... |
26
+
27
+
28
+
29
+ ## External Dependencies
30
+ <!-- REF:AUTO -->
31
+ *Auto-detected by external_detector.py*
32
+
33
+ No external dependencies detected.
34
+
35
+
36
+
37
+ ## Integration Boundaries
38
+ <!-- REF:MANUAL -->
39
+ *Where this module connects to external systems*
40
+
41
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
42
+ |---------------|------------|-----------------|-----------|------------|
43
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,43 @@
1
+ # CODE_MAP: `models`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `gherkin.py` | File | [Desc] | - |
15
+ | `version.py` | File | [Desc] | - |
16
+ | `__init__.py` | File | [Desc] | - |
17
+ | `hierarchy.py` | File | [Desc] | - |
18
+ | `invest.py` | File | [Desc] | - |
19
+
20
+
21
+ ## Key Classes / Functions
22
+ <!-- REF:MANUAL -->
23
+ | Name | File | Purpose | Dependencies |
24
+ |------|------|---------|--------------|
25
+ | ... | ... | ... | ... |
26
+
27
+
28
+
29
+ ## External Dependencies
30
+ <!-- REF:AUTO -->
31
+ *Auto-detected by external_detector.py*
32
+
33
+ No external dependencies detected.
34
+
35
+
36
+
37
+ ## Integration Boundaries
38
+ <!-- REF:MANUAL -->
39
+ *Where this module connects to external systems*
40
+
41
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
42
+ |---------------|------------|-----------------|-----------|------------|
43
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,40 @@
1
+ # CODE_MAP: `prompts`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `start_agent.py` | File | [Desc] | - |
15
+ | `__init__.py` | File | [Desc] | - |
16
+
17
+
18
+ ## Key Classes / Functions
19
+ <!-- REF:MANUAL -->
20
+ | Name | File | Purpose | Dependencies |
21
+ |------|------|---------|--------------|
22
+ | ... | ... | ... | ... |
23
+
24
+
25
+
26
+ ## External Dependencies
27
+ <!-- REF:AUTO -->
28
+ *Auto-detected by external_detector.py*
29
+
30
+ No external dependencies detected.
31
+
32
+
33
+
34
+ ## Integration Boundaries
35
+ <!-- REF:MANUAL -->
36
+ *Where this module connects to external systems*
37
+
38
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
39
+ |---------------|------------|-----------------|-----------|------------|
40
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,45 @@
1
+ # CODE_MAP: `security`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `file_audit.py` | File | [Desc] | - |
15
+ | `url_scan.py` | File | [Desc] | - |
16
+ | `dependency_audit.py` | File | [Desc] | - |
17
+ | `secret_scan.py` | File | [Desc] | - |
18
+ | `__init__.py` | File | [Desc] | - |
19
+ | `report_generator.py` | File | [Desc] | - |
20
+ | `network_scan.py` | File | [Desc] | - |
21
+
22
+
23
+ ## Key Classes / Functions
24
+ <!-- REF:MANUAL -->
25
+ | Name | File | Purpose | Dependencies |
26
+ |------|------|---------|--------------|
27
+ | ... | ... | ... | ... |
28
+
29
+
30
+
31
+ ## External Dependencies
32
+ <!-- REF:AUTO -->
33
+ *Auto-detected by external_detector.py*
34
+
35
+ No external dependencies detected.
36
+
37
+
38
+
39
+ ## Integration Boundaries
40
+ <!-- REF:MANUAL -->
41
+ *Where this module connects to external systems*
42
+
43
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
44
+ |---------------|------------|-----------------|-----------|------------|
45
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,94 @@
1
+ # CODE_MAP: `tools`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `browser/` | Dir | [Desc] | - |
15
+ | `codemap/` | Dir | [Desc] | - |
16
+ | `ref-reports/` | Dir | [Desc] | - |
17
+ | `invest_scorer.py` | File | [Desc] | - |
18
+ | `workflow_tools.py` | File | [Desc] | - |
19
+ | `test_plan_validator.py` | File | [Desc] | - |
20
+ | `compliance_remediation.py` | File | [Desc] | - |
21
+ | `jira_confluence_export.py` | File | [Desc] | - |
22
+ | `symbol_smoke_runner.py` | File | [Desc] | - |
23
+ | `context_manager.py` | File | [Desc] | - |
24
+ | `agents_generator.py` | File | [Desc] | - |
25
+ | `requirements_serializer.py` | File | [Desc] | - |
26
+ | `debt_scanner.py` | File | [Desc] | - |
27
+ | `version_manager.py` | File | [Desc] | - |
28
+ | `report_utils.py` | File | [Desc] | - |
29
+ | `compliance.py` | File | [Desc] | - |
30
+ | `flow_mapper.py` | File | [Desc] | - |
31
+ | `ai_pattern_detector.py` | File | [Desc] | - |
32
+ | `dependency_graph.py` | File | [Desc] | - |
33
+ | `migration_readiness_scanner.py` | File | [Desc] | - |
34
+ | `complexity.py` | File | [Desc] | - |
35
+ | `health_scanner.py` | File | [Desc] | - |
36
+ | `summary_generator.py` | File | [Desc] | - |
37
+ | `external_detector.py` | File | [Desc] | - |
38
+ | `__init__.py` | File | [Desc] | - |
39
+ | `dead_code_scanner.py` | File | [Desc] | - |
40
+ | `codemap.py` | File | [Desc] | - |
41
+ | `tier1_fixer.py` | File | [Desc] | - |
42
+ | `brownfield_populator.py` | File | [Desc] | - |
43
+ | `pattern_learner.py` | File | [Desc] | - |
44
+ | `context_tools.py` | File | [Desc] | - |
45
+ | `context_graph.py` | File | [Desc] | - |
46
+ | `json_output.py` | File | [Desc] | - |
47
+ | `evaluate_gate.py` | File | [Desc] | - |
48
+ | `docs_scanner.py` | File | [Desc] | - |
49
+ | `guard_tools.py` | File | [Desc] | - |
50
+ | `gherkin_parser.py` | File | [Desc] | - |
51
+ | `sequencing_engine.py` | File | [Desc] | - |
52
+ | `symbol_resolver.py` | File | [Desc] | - |
53
+ | `test_smell_walker.py` | File | [Desc] | - |
54
+ | `code_quality_scanner.py` | File | [Desc] | - |
55
+ | `flow_gap_detector.py` | File | [Desc] | - |
56
+ | `features_generator.py` | File | [Desc] | - |
57
+ | `complexity_ast.py` | File | [Desc] | - |
58
+ | `codemap_freshness.py` | File | [Desc] | - |
59
+ | `discovery_audit.py` | File | [Desc] | - |
60
+ | `migration_mapper.py` | File | [Desc] | - |
61
+ | `handoff_tools.py` | File | [Desc] | - |
62
+ | `full_suite_runner.py` | File | [Desc] | - |
63
+ | `security_audit_tool.py` | File | [Desc] | - |
64
+ | `cross_repo_linker.py` | File | [Desc] | - |
65
+ | `hierarchy_manager.py` | File | [Desc] | - |
66
+
67
+
68
+ ## Key Classes / Functions
69
+ <!-- REF:MANUAL -->
70
+ | Name | File | Purpose | Dependencies |
71
+ |------|------|---------|--------------|
72
+ | ... | ... | ... | ... |
73
+
74
+
75
+
76
+ ## External Dependencies
77
+ <!-- REF:AUTO -->
78
+ *Auto-detected by external_detector.py*
79
+
80
+ ### Hardcoded External URLs
81
+
82
+ | Domain | File | Line | Notes |
83
+ |--------|------|------|-------|
84
+ | `cdn.jsdelivr.net` | `context_graph.py` | 713 | ⚠️ Consider env var |
85
+
86
+
87
+
88
+ ## Integration Boundaries
89
+ <!-- REF:MANUAL -->
90
+ *Where this module connects to external systems*
91
+
92
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
93
+ |---------------|------------|-----------------|-----------|------------|
94
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,44 @@
1
+ # CODE_MAP: `tools/browser`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `screenshot_utils.py` | File | [Desc] | - |
15
+ | `__init__.py` | File | [Desc] | - |
16
+ | `evidence_verifier.py` | File | [Desc] | - |
17
+ | `test_executor.py` | File | [Desc] | - |
18
+ | `execution_logger.py` | File | [Desc] | - |
19
+ | `playwright_mcp_client.py` | File | [Desc] | - |
20
+
21
+
22
+ ## Key Classes / Functions
23
+ <!-- REF:MANUAL -->
24
+ | Name | File | Purpose | Dependencies |
25
+ |------|------|---------|--------------|
26
+ | ... | ... | ... | ... |
27
+
28
+
29
+
30
+ ## External Dependencies
31
+ <!-- REF:AUTO -->
32
+ *Auto-detected by external_detector.py*
33
+
34
+ No external dependencies detected.
35
+
36
+
37
+
38
+ ## Integration Boundaries
39
+ <!-- REF:MANUAL -->
40
+ *Where this module connects to external systems*
41
+
42
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
43
+ |---------------|------------|-----------------|-----------|------------|
44
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,42 @@
1
+ # CODE_MAP: `utils`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `__init__.py` | File | [Desc] | - |
15
+ | `handoff_logger.py` | File | [Desc] | - |
16
+ | `ignore_matcher.py` | File | [Desc] | - |
17
+ | `git_utils.py` | File | [Desc] | - |
18
+
19
+
20
+ ## Key Classes / Functions
21
+ <!-- REF:MANUAL -->
22
+ | Name | File | Purpose | Dependencies |
23
+ |------|------|---------|--------------|
24
+ | ... | ... | ... | ... |
25
+
26
+
27
+
28
+ ## External Dependencies
29
+ <!-- REF:AUTO -->
30
+ *Auto-detected by external_detector.py*
31
+
32
+ No external dependencies detected.
33
+
34
+
35
+
36
+ ## Integration Boundaries
37
+ <!-- REF:MANUAL -->
38
+ *Where this module connects to external systems*
39
+
40
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
41
+ |---------------|------------|-----------------|-----------|------------|
42
+ | API Call | [file.py] | [External API] | Outbound | Medium |
@@ -0,0 +1,42 @@
1
+ # CODE_MAP: `workflow`
2
+
3
+
4
+ ## Purpose
5
+ <!-- REF:MANUAL -->
6
+ [Describe the purpose of this module]
7
+
8
+
9
+
10
+ ## Directory Structure
11
+ <!-- REF:AUTO -->
12
+ | Item | Type | Purpose | Dependencies |
13
+ |------|------|---------|--------------|
14
+ | `__init__.py` | File | [Desc] | - |
15
+ | `state_machine.py` | File | [Desc] | - |
16
+ | `transitions.py` | File | [Desc] | - |
17
+ | `capabilities.py` | File | [Desc] | - |
18
+
19
+
20
+ ## Key Classes / Functions
21
+ <!-- REF:MANUAL -->
22
+ | Name | File | Purpose | Dependencies |
23
+ |------|------|---------|--------------|
24
+ | ... | ... | ... | ... |
25
+
26
+
27
+
28
+ ## External Dependencies
29
+ <!-- REF:AUTO -->
30
+ *Auto-detected by external_detector.py*
31
+
32
+ No external dependencies detected.
33
+
34
+
35
+
36
+ ## Integration Boundaries
37
+ <!-- REF:MANUAL -->
38
+ *Where this module connects to external systems*
39
+
40
+ | Boundary Type | Local Code | External System | Data Flow | Risk Level |
41
+ |---------------|------------|-----------------|-----------|------------|
42
+ | API Call | [file.py] | [External API] | Outbound | Medium |