@codeyam/codeyam-cli 0.1.0-staging.323686 → 0.1.0-staging.483fdc2
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.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +2 -2
- package/analyzer-template/packages/ai/index.ts +6 -1
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +39 -17
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +67 -9
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +308 -50
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +15 -6
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +664 -242
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +20 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +35 -13
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +160 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +289 -83
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +269 -1
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +11 -3
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +297 -7
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
- package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +20 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +14 -4
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
- package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +57 -13
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +29 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +35 -4
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +199 -17
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
- package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
- package/analyzer-template/packages/aws/package.json +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/package.json +1 -1
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
- package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/project/constructMockCode.ts +54 -9
- package/analyzer-template/project/writeMockDataTsx.ts +73 -2
- package/background/src/lib/virtualized/project/constructMockCode.js +45 -3
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +71 -2
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +146 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +7 -5
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/utils/install-skills.js +22 -0
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/reviewedRules.js +92 -0
- package/codeyam-cli/src/utils/reviewedRules.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-CX9f-5xM.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{manifest-7522edd4.js → manifest-bba56ec1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/memory-DuTFSyJ2.js +92 -0
- package/codeyam-cli/src/webserver/build/client/assets/{root-eVAaavTS.js → root-DTfSQARG.js} +6 -6
- package/codeyam-cli/src/webserver/build/server/assets/{index-DVzYx8PN.js → index-TD1f-DHV.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BQ-1XyEa.js +258 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/templates/codeyam:memory.md +174 -233
- package/codeyam-cli/templates/codeyam:new-rule.md +41 -2
- package/codeyam-cli/templates/rule-reflection-hook.py +161 -0
- package/codeyam-cli/templates/rules-instructions.md +126 -0
- package/package.json +1 -1
- package/packages/ai/index.js +2 -1
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +29 -12
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +54 -8
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +239 -43
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +503 -165
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +22 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +34 -9
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +159 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +237 -73
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +195 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +10 -2
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +209 -3
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
- package/packages/ai/src/lib/mergeStatements.js +70 -51
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
- package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
- package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +13 -5
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +14 -4
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +52 -10
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +25 -8
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +34 -4
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +168 -9
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
- package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
- package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/memory-yxFcrxBX.js +0 -92
- package/codeyam-cli/src/webserver/build/server/assets/server-build-4Cr0uToj.js +0 -257
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Rule reflection hook for Claude Code.
|
|
4
|
+
|
|
5
|
+
Reads the session transcript to find new conversation since last check,
|
|
6
|
+
then prompts Claude to consider rule updates if there was substantive content.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
MIN_USER_TURNS = 5 # Fire after N user turns
|
|
14
|
+
|
|
15
|
+
def main():
|
|
16
|
+
# Read hook input from stdin
|
|
17
|
+
try:
|
|
18
|
+
hook_input = json.load(sys.stdin)
|
|
19
|
+
except json.JSONDecodeError:
|
|
20
|
+
# No valid input, exit silently
|
|
21
|
+
return
|
|
22
|
+
|
|
23
|
+
session_id = hook_input.get('session_id', '')
|
|
24
|
+
transcript_path = hook_input.get('transcript_path', '')
|
|
25
|
+
stop_hook_active = hook_input.get('stop_hook_active', False)
|
|
26
|
+
|
|
27
|
+
# Prevent infinite loops - if we're already in a stop hook continuation, exit silently
|
|
28
|
+
if stop_hook_active:
|
|
29
|
+
return
|
|
30
|
+
|
|
31
|
+
if not session_id or not transcript_path:
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
# Marker file tracks last checked line per session
|
|
35
|
+
marker_dir = Path('/tmp/claude-rule-markers')
|
|
36
|
+
marker_dir.mkdir(exist_ok=True)
|
|
37
|
+
marker_file = marker_dir / f'{session_id}.marker'
|
|
38
|
+
|
|
39
|
+
# Read last checked line
|
|
40
|
+
last_line = 0
|
|
41
|
+
if marker_file.exists():
|
|
42
|
+
try:
|
|
43
|
+
last_line = int(marker_file.read_text().strip())
|
|
44
|
+
except (ValueError, IOError):
|
|
45
|
+
last_line = 0
|
|
46
|
+
|
|
47
|
+
# Read transcript and get new lines
|
|
48
|
+
try:
|
|
49
|
+
with open(transcript_path, 'r') as f:
|
|
50
|
+
all_lines = f.readlines()
|
|
51
|
+
except IOError:
|
|
52
|
+
return
|
|
53
|
+
|
|
54
|
+
current_line_count = len(all_lines)
|
|
55
|
+
new_lines = all_lines[last_line:]
|
|
56
|
+
|
|
57
|
+
if not new_lines:
|
|
58
|
+
return
|
|
59
|
+
|
|
60
|
+
# Count user turns and extract conversation content from new lines
|
|
61
|
+
user_turn_count = 0
|
|
62
|
+
conversation_snippets = []
|
|
63
|
+
|
|
64
|
+
for line in new_lines:
|
|
65
|
+
try:
|
|
66
|
+
obj = json.loads(line)
|
|
67
|
+
msg_type = obj.get('type')
|
|
68
|
+
|
|
69
|
+
if msg_type not in ('user', 'assistant'):
|
|
70
|
+
continue
|
|
71
|
+
|
|
72
|
+
message = obj.get('message', {})
|
|
73
|
+
content = message.get('content', '')
|
|
74
|
+
is_external_user = msg_type == 'user' and obj.get('userType') == 'external'
|
|
75
|
+
|
|
76
|
+
# Handle string content
|
|
77
|
+
if isinstance(content, str):
|
|
78
|
+
# Skip meta messages and very short content
|
|
79
|
+
if obj.get('isMeta') or len(content) < 20:
|
|
80
|
+
continue
|
|
81
|
+
# Skip tool results (they show up as user messages)
|
|
82
|
+
if content.startswith('[{') or '<tool_result' in content:
|
|
83
|
+
continue
|
|
84
|
+
|
|
85
|
+
# Count substantive user turns
|
|
86
|
+
if is_external_user and not content.startswith('<'):
|
|
87
|
+
user_turn_count += 1
|
|
88
|
+
|
|
89
|
+
conversation_snippets.append({
|
|
90
|
+
'role': message.get('role', msg_type),
|
|
91
|
+
'content': content[:500] # Truncate long messages
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
# Handle array content (tool calls, etc.)
|
|
95
|
+
elif isinstance(content, list):
|
|
96
|
+
for item in content:
|
|
97
|
+
if isinstance(item, dict):
|
|
98
|
+
if item.get('type') == 'text':
|
|
99
|
+
text = item.get('text', '')
|
|
100
|
+
if len(text) > 20:
|
|
101
|
+
conversation_snippets.append({
|
|
102
|
+
'role': message.get('role', msg_type),
|
|
103
|
+
'content': text[:500]
|
|
104
|
+
})
|
|
105
|
+
except (json.JSONDecodeError, KeyError):
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
# Only fire after enough user turns
|
|
109
|
+
if user_turn_count < MIN_USER_TURNS:
|
|
110
|
+
return
|
|
111
|
+
|
|
112
|
+
# Update marker with current line count
|
|
113
|
+
marker_file.write_text(str(current_line_count))
|
|
114
|
+
|
|
115
|
+
# If not enough substantive conversation, exit silently
|
|
116
|
+
if len(conversation_snippets) < 3:
|
|
117
|
+
return
|
|
118
|
+
|
|
119
|
+
# Build a summary of the recent conversation for the rule check
|
|
120
|
+
summary_lines = []
|
|
121
|
+
for snippet in conversation_snippets[-15:]: # Last 15 messages
|
|
122
|
+
role = snippet['role']
|
|
123
|
+
content = snippet['content'].replace('\n', ' ')[:300]
|
|
124
|
+
summary_lines.append(f"[{role}]: {content}")
|
|
125
|
+
|
|
126
|
+
summary = '\n'.join(summary_lines)
|
|
127
|
+
|
|
128
|
+
# Write detailed context to a file (keeps displayed output short)
|
|
129
|
+
context_file = marker_dir / f'{session_id}.context'
|
|
130
|
+
context = f"""Recent conversation to review for rule-worthy learnings:
|
|
131
|
+
|
|
132
|
+
{summary}
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
Guidelines:
|
|
136
|
+
- Did Claude get confused during this session in any way?
|
|
137
|
+
- How exactly did it get confused and what information would have resolved that confusion. No additional detail is needed especially if it is something that Claude likely already knows.
|
|
138
|
+
- Only update rules for patterns of confusion that will likely recur in future sessions.
|
|
139
|
+
- Document knowledge not easily evident from code
|
|
140
|
+
- Locations of tests
|
|
141
|
+
- Commands that can be run that are relevant to the task at hand
|
|
142
|
+
- Architectural design, where to look for, fix, or add certain things
|
|
143
|
+
- Pay particular attention to times when the user must interrupt or correct Claude.
|
|
144
|
+
- Do not document bugs being fixed as they will likely be resolved.
|
|
145
|
+
- Issues that are abandoned as known issues can be noted.
|
|
146
|
+
- Keep rules concise (<50 lines), use bullets/tables where appropriate.
|
|
147
|
+
- Clean up, summarize, and delete existing rules as needed.
|
|
148
|
+
- If no changes are needed, just say "No rule updates needed."
|
|
149
|
+
"""
|
|
150
|
+
context_file.write_text(context)
|
|
151
|
+
|
|
152
|
+
# Output blocking decision - just trigger background agent
|
|
153
|
+
# Keep reason minimal since main agent will spawn background worker
|
|
154
|
+
output = {
|
|
155
|
+
"decision": "block",
|
|
156
|
+
"reason": f"RULE_CHECK:{context_file}"
|
|
157
|
+
}
|
|
158
|
+
print(json.dumps(output))
|
|
159
|
+
|
|
160
|
+
if __name__ == '__main__':
|
|
161
|
+
main()
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Claude Rules Guide
|
|
2
|
+
|
|
3
|
+
Rules provide context-specific guidance when working in files matching their `paths` patterns.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
1. **One concept per rule** - Each rule should cover a single topic. If you're documenting two unrelated things, create two rules.
|
|
8
|
+
2. **Paths must match content scope** - A rule about one specific file should have that file in `paths`, not a broad `**/*.ts` pattern.
|
|
9
|
+
3. **Be concise** - Every word costs context. Use bullets and tables.
|
|
10
|
+
|
|
11
|
+
## When to Create a New Rule
|
|
12
|
+
|
|
13
|
+
Create a new rule when:
|
|
14
|
+
|
|
15
|
+
- You learn something non-obvious about the codebase
|
|
16
|
+
- You make a mistake and want to prevent it in the future
|
|
17
|
+
- The user explains something that isn't clear from the code
|
|
18
|
+
- An existing rule is covering multiple unrelated topics (split it)
|
|
19
|
+
|
|
20
|
+
## Before Creating: The Confusion Test
|
|
21
|
+
|
|
22
|
+
Before writing a rule, verify it passes these tests:
|
|
23
|
+
|
|
24
|
+
**1. Could Claude figure this out by reading the code?**
|
|
25
|
+
|
|
26
|
+
- If YES → don't create the rule (it documents the obvious)
|
|
27
|
+
- If NO → the rule is valuable
|
|
28
|
+
|
|
29
|
+
**2. Does this explain "why" not just "what"?**
|
|
30
|
+
|
|
31
|
+
- Good: Explains historical context, gotchas, or non-obvious behavior
|
|
32
|
+
- Bad: Describes what functions do or how files are structured
|
|
33
|
+
|
|
34
|
+
**3. Would this have prevented a past mistake?**
|
|
35
|
+
|
|
36
|
+
- If you can point to a commit, bug, or confusion this would have prevented → create it
|
|
37
|
+
- If it's just "nice to know" information → skip it
|
|
38
|
+
|
|
39
|
+
### Examples
|
|
40
|
+
|
|
41
|
+
**✅ Worth documenting:**
|
|
42
|
+
|
|
43
|
+
- "Path prefix matching must check boundaries" (learned from a bug)
|
|
44
|
+
- "These files must change together because of X invariant" (hidden dependency)
|
|
45
|
+
- "This pattern exists because the obvious approach causes Y problem" (non-obvious design)
|
|
46
|
+
|
|
47
|
+
**❌ Not worth documenting:**
|
|
48
|
+
|
|
49
|
+
- "Use `pnpm jest` to run tests" (obvious from package.json)
|
|
50
|
+
- "The auth module handles authentication" (obvious from reading code)
|
|
51
|
+
- "This function takes X and returns Y" (Claude can read the signature)
|
|
52
|
+
|
|
53
|
+
## Path Specificity
|
|
54
|
+
|
|
55
|
+
The `paths` field controls when the rule is shown. Match the scope of your content:
|
|
56
|
+
|
|
57
|
+
| Content Scope | Path Pattern | Example |
|
|
58
|
+
| ------------- | ----------------------- | ------------------------------------------------------ |
|
|
59
|
+
| Single file | `'path/to/file.ts'` | Rule about `processExpression.ts` specifically |
|
|
60
|
+
| Related files | `'path/to/feature*.ts'` | Rule about `generateExecutionFlows*.ts` files |
|
|
61
|
+
| Directory | `'path/to/dir/**/*.ts'` | Rule about the queue system in `utils/queue/` |
|
|
62
|
+
| Cross-cutting | Multiple specific paths | Testing rule with paths to test configs and test files |
|
|
63
|
+
|
|
64
|
+
**Anti-pattern**: Don't use `'**/*.ts'` for a rule about one specific feature.
|
|
65
|
+
|
|
66
|
+
## File Structure
|
|
67
|
+
|
|
68
|
+
Rules mirror the source code structure:
|
|
69
|
+
|
|
70
|
+
| Source Location | Rule Location |
|
|
71
|
+
| -------------------- | --------------------------------------- |
|
|
72
|
+
| `src/api/auth.ts` | `.claude/rules/src/api/auth.md` |
|
|
73
|
+
| `src/utils/queue/**` | `.claude/rules/src/utils/queue.md` |
|
|
74
|
+
| Test configuration | `.claude/rules/testing/jest-configs.md` |
|
|
75
|
+
|
|
76
|
+
## Required Frontmatter
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
---
|
|
80
|
+
paths:
|
|
81
|
+
- 'specific/path/to/file.ts'
|
|
82
|
+
- 'another/specific/path/*.ts'
|
|
83
|
+
category: architecture | testing | faq
|
|
84
|
+
timestamp: 2026-01-30T00:00:00Z
|
|
85
|
+
---
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| Field | Purpose |
|
|
89
|
+
| ----------- | -------------------------------------------------------------------------------------------------- |
|
|
90
|
+
| `paths` | Glob patterns - be specific to avoid loading rules unnecessarily |
|
|
91
|
+
| `category` | `architecture` (design/data flow), `testing` (test commands/patterns), `faq` (gotchas/workarounds) |
|
|
92
|
+
| `timestamp` | ISO 8601 - update when rule is reviewed |
|
|
93
|
+
|
|
94
|
+
## Content Guidelines
|
|
95
|
+
|
|
96
|
+
### Be Actionable
|
|
97
|
+
|
|
98
|
+
- Good: "Run `pnpm test:api` for API tests"
|
|
99
|
+
- Bad: "Make sure to run the appropriate tests"
|
|
100
|
+
|
|
101
|
+
### Focus on What, Not What Not
|
|
102
|
+
|
|
103
|
+
- Good: "Auth tokens are stored in httpOnly cookies via `src/auth/cookies.ts`"
|
|
104
|
+
- Bad: "WARNING: Don't store tokens in localStorage!"
|
|
105
|
+
|
|
106
|
+
### Keep Rules Short
|
|
107
|
+
|
|
108
|
+
- Target 30-50 lines
|
|
109
|
+
- If a rule exceeds 60 lines, consider splitting it
|
|
110
|
+
|
|
111
|
+
## Categories
|
|
112
|
+
|
|
113
|
+
**architecture** - Design decisions, file relationships, data flow
|
|
114
|
+
|
|
115
|
+
- "These three files must change together because..."
|
|
116
|
+
- "Data flows from X → Y → Z"
|
|
117
|
+
|
|
118
|
+
**testing** - Test commands, mock patterns, fixtures
|
|
119
|
+
|
|
120
|
+
- "Run tests with: `pnpm test path/to/test.ts`"
|
|
121
|
+
- "Must run `pnpm pretest` first because..."
|
|
122
|
+
|
|
123
|
+
**faq** - Gotchas, workarounds, common questions
|
|
124
|
+
|
|
125
|
+
- "If you see error X, it means Y"
|
|
126
|
+
- "This looks wrong but is intentional because..."
|
package/package.json
CHANGED
package/packages/ai/index.js
CHANGED
|
@@ -32,8 +32,9 @@ export { default as splitOutsideParentheses, splitOutsideParenthesesAndArrays, j
|
|
|
32
32
|
export { cleanKnownObjectFunctionsFromMapping } from "./src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js";
|
|
33
33
|
export { clearAttributesFromMapping, removeDuplicateFunctionCalls, } from "./src/lib/dataStructure/helpers/cleanNonObjectFunctions.js";
|
|
34
34
|
export { default as convertDotNotation } from "./src/lib/dataStructure/helpers/convertDotNotation.js";
|
|
35
|
+
export { default as convertTypeAnnotationsToValues } from "./src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js";
|
|
35
36
|
export { default as cleanOutBoundary } from "./src/lib/cleanOutBoundary.js";
|
|
36
|
-
export { fillInDirectSchemaGapsAndUnknowns } from "./src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js";
|
|
37
|
+
export { fillInDirectSchemaGapsAndUnknowns, buildSchemaIndexes, } from "./src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js";
|
|
37
38
|
export { default as deduplicateFunctionSchemas } from "./src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js";
|
|
38
39
|
export { default as getConditionalUsagesFromCode } from "./src/lib/getConditionalUsagesFromCode.js";
|
|
39
40
|
export { getExternalFunctionCallInfo, getFunctionSignature, getReturnValue, getUsageEquivalencies, getSourceEquivalencies, getEquivalentSignatureVariables, getConditionalUsages, getConditionalEffects, getCompoundConditionals, getChildBoundaryGatingConditions, getJsxRenderingUsages, } from "./src/lib/worker/SerializableDataStructure.js";
|
package/packages/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAC/F,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAC7G,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAC/F,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EACL,OAAO,IAAI,0BAA0B,EACrC,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAC3G,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EACL,OAAO,IAAI,yBAAyB,GAErC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,OAAO,IAAI,gCAAgC,GAG5C,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,0CAA0C,EAAE,MAAM,sDAAsD,CAAC;AAC7H,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,OAAO,IAAI,uBAAuB,EAClC,gCAAgC,EAChC,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,oCAAoC,EAAE,MAAM,2DAA2D,CAAC;AACjH,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -260,7 +260,7 @@ export async function analyzeScopeLocal({ entity, fileAnalyzer, scope, scopeData
|
|
|
260
260
|
}, null, 2));
|
|
261
261
|
}
|
|
262
262
|
for (const mapping of [structure, equivalentVariables]) {
|
|
263
|
-
for (let [key,
|
|
263
|
+
for (let [key, rawValue] of Object.entries(mapping)) {
|
|
264
264
|
for (const [childScopeId, childScope] of sortedEntries) {
|
|
265
265
|
const scopeText = fileAnalyzer.sourceFile.text.slice(childScope.start, childScope.end);
|
|
266
266
|
const replaceChildScopeId = (text) => {
|
|
@@ -275,18 +275,35 @@ export async function analyzeScopeLocal({ entity, fileAnalyzer, scope, scopeData
|
|
|
275
275
|
}
|
|
276
276
|
return text;
|
|
277
277
|
};
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
if (
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
278
|
+
// Handle both string and string[] values (for OR expressions)
|
|
279
|
+
const processValue = (value) => {
|
|
280
|
+
if (value.includes(scopeText)) {
|
|
281
|
+
// DEBUG: Log when replacement happens
|
|
282
|
+
if (key.includes('Fetcher') || key.includes('fetcher')) {
|
|
283
|
+
console.log('CodeYam DEBUG value replacement:', JSON.stringify({
|
|
284
|
+
key,
|
|
285
|
+
oldValue: value,
|
|
286
|
+
childScopeId,
|
|
287
|
+
scopeTextPreview: scopeText.slice(0, 50),
|
|
288
|
+
}));
|
|
289
|
+
}
|
|
290
|
+
return replaceChildScopeId(value);
|
|
291
|
+
}
|
|
292
|
+
return value;
|
|
293
|
+
};
|
|
294
|
+
if (Array.isArray(rawValue)) {
|
|
295
|
+
const newValues = rawValue.map(processValue);
|
|
296
|
+
mapping[key] =
|
|
297
|
+
newValues;
|
|
298
|
+
rawValue = newValues;
|
|
299
|
+
}
|
|
300
|
+
else if (typeof rawValue === 'string') {
|
|
301
|
+
const newValue = processValue(rawValue);
|
|
302
|
+
if (newValue !== rawValue) {
|
|
303
|
+
mapping[key] =
|
|
304
|
+
newValue;
|
|
305
|
+
rawValue = newValue;
|
|
287
306
|
}
|
|
288
|
-
value = replaceChildScopeId(value);
|
|
289
|
-
mapping[key] = value;
|
|
290
307
|
}
|
|
291
308
|
if (key.includes(scopeText)) {
|
|
292
309
|
const oldKey = key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeScope.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/analyzeScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;IAgBI;AAGJ,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,eAA8B,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,kBAAkB,GAEnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sEAAsE,CAAC;AAC7G,OAAO,EAAE,0BAA0B,EAAE,MAAM,2EAA2E,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,2DAA2D,CAAC;AACvF,OAAO,kBAAkB,MAAM,wDAAwD,CAAC;AAExF,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,uBAAuB,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,4DAA4D;AAC5D,IAAI,UAAU,GAGH,IAAI,CAAC;AAChB,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC;;;GAGG;AACH,SAAS,eAAe;IACtB,IACE,OAAO,OAAO,KAAK,WAAW;QAC9B,CAAC,OAAO,CAAC,QAAQ;QACjB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EACtB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,+CAA+C;IAC9D,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;YAChD,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YACzD,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;SAChE,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3B,UAAU,GAAG,IAAI,CAAC;QAElB,wDAAwD;QACxD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE;YAC5C,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YACvD,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YAC7D,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;SAC1E,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB;IACvB,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,6DAA6D;YAC3D,+EAA+E,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO;IAEhC,qDAAqD;IACrD,IACE,OAAO,OAAO,KAAK,WAAW;QAC9B,CAAC,OAAO,CAAC,QAAQ;QACjB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EACtB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,MAAM,EAAE,WAAW,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAElD,IACE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,WAAW;QACX,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAC1B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE;YAC5D,WAAW;SACZ,CAAC,CAAC;QACH,UAAU,GAAG,IAAI,OAAO,CACtB;YACE,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,CAAC;YACb,sEAAsE;YACtE,mEAAmE;YACnE,UAAU,EAAE,CAAC;SACd,CACF,CAAC;QAEF,8CAA8C;QAC9C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,wDAAwD;QACxD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,sEAAsE;QACtE,8DAA8D;QAC9D,qCAAqC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE;YAClE,WAAW;YACX,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK;YAC9D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;SACnD,CAAC,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,CAAC,0CAA0C;IAC/D,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,gBAAgB,CAAC,KAAgB;IAC9C,MAAM,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,MAAM,EACN,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,GACY;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,aAAa,GAAG,KAAK;YACxC,GAAG,SAAS;SACb,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,MAAM,uBAAuB,GAAgB,IAAI,GAAG,EAAE,CAAC;QACvD,yDAAyD;QACzD,MAAM,oBAAoB,GAGtB,EAAE,CAAC;QACP,iEAAiE;QACjE,MAAM,qBAAqB,GACzB,EAAE,CAAC;QACL,2EAA2E;QAC3E,MAAM,uBAAuB,GAC3B,EAAE,CAAC;QACL,0EAA0E;QAC1E,MAAM,mBAAmB,GAGrB,EAAE,CAAC;QACP,iEAAiE;QACjE,MAAM,gCAAgC,GAGlC,EAAE,CAAC;QACP,8EAA8E;QAC9E,MAAM,qBAAqB,GACzB,EAAE,CAAC;QAEL,MAAM,+BAA+B,GAAG,eAAe,CAAC,GAAG,CACzD,CAAC,cAAc,EAAE,EAAE;YACjB,MAAM,iBAAiB,GAAG,mBAAmB,CAC3C,YAAY,EACZ,cAAc,CACf,CAAC;YACF,kDAAkD;YAClD,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxD,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CACpC,CAAC;YACF,+CAA+C;YAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CACzC,iBAAiB,CAAC,iBAAiB,CACpC,EAAE,CAAC;gBACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClC,CAAC;gBACD,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAC7C,CAAC;YACD,gDAAgD;YAChD,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,qBAAqB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,kDAAkD;YAClD,IAAI,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,uBAAuB,CAAC,IAAI,CAC1B,GAAG,iBAAiB,CAAC,oBAAoB,CAC1C,CAAC;YACJ,CAAC;YACD,8CAA8C;YAC9C,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;gBACvC,KAAK,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CACpD,iBAAiB,CAAC,gBAAgB,CACnC,EAAE,CAAC;oBACF,mBAAmB,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,6DAA6D;YAC7D,IAAI,iBAAiB,CAAC,6BAA6B,EAAE,CAAC;gBACpD,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAC9C,iBAAiB,CAAC,6BAA6B,CAChD,EAAE,CAAC;oBACF,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjD,gCAAgC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBACnD,CAAC;oBACD,gCAAgC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,iDAAiD;YACjD,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;gBACjD,qBAAqB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO;gBACL,cAAc;gBACd,iBAAiB;aAClB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,OAAO,CAAC,GAAG,CACf,+BAA+B,CAAC,GAAG,CACjC,KAAK,EAAE,8BAA8B,EAAiB,EAAE;YACtD,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GACzC,8BAA8B,CAAC;YAEjC,eAAe;YACf,uHAAuH;YACvH,KAAK;YAEL,0BAA0B;YAC1B,6BAA6B;YAC7B,wBAAwB;YACxB,sCAAsC;YACtC,KAAK;YACL,yCAAyC;YACzC,wBAAwB;YACxB,uEAAuE;YACvE,8DAA8D;YAC9D,sCAAsC;YACtC,kBAAkB;YAClB,oBAAoB;YACpB,8CAA8C;YAC9C,6BAA6B;YAC7B,SAAS;YACT,aAAa;YACb,mEAAmE;YACnE,MAAM;YACN,IAAI;YACJ,+CAA+C;YAC/C,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC;gBACjC,eAAe;gBACf,6EAA6E;gBAC7E,KAAK;gBACL,MAAM,SAAS,GAAG,EAAE,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBACrD,MAAM,mBAAmB,GAAG;oBAC1B,GAAG,iBAAiB,CAAC,mBAAmB;iBACzC,CAAC;gBAEF,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;qBAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAC1B,cAAc,CAAC,eAAe,CAAC,IAAI,CACjC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAC7D,CACF;qBACA,MAAM,CACL,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;oBACxB,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;oBACrB,OAAO,GAAG,CAAC;gBACb,CAAC,EACD,EAA+B,CAChC,CAAC;gBAEJ,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAC5D,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;oBAC7B,OAAO,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjE,CAAC,CACF,CAAC;gBAEF,oEAAoE;gBACpE,IACE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACvC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvC,CAAC;oBACD,OAAO,CAAC,GAAG,CACT,uCAAuC,EACvC,IAAI,CAAC,SAAS,CACZ;wBACE,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC/C,cAAc,EAAE,cAAc,CAAC,KAAK;wBACpC,YAAY,EAAE,cAAc,CAAC,GAAG;wBAChC,eAAe,EAAE,cAAc,CAAC,eAAe;wBAC/C,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;wBACrD,YAAY,EAAE,iBAAiB,CAAC,SAAS;wBACzC,sBAAsB,EACpB,iBAAiB,CAAC,mBAAmB;wBACvC,aAAa,EAAE,iBAAiB,CAAC,UAAU;wBAC3C,mBAAmB;qBACpB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBACJ,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,CAAC;oBACvD,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjD,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,aAAa,EAAE,CAAC;4BACvD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAClD,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,GAAG,CACf,CAAC;4BAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;gCAC3C,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oCACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC;gCACtD,CAAC;qCAAM,IACL,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,CAAC,EAChD,CAAC;oCACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC;gCACrD,CAAC;qCAAM,CAAC;oCACN,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,YAAY,IAAI,CAAC,CAAC;gCACtD,CAAC;gCACD,OAAO,IAAI,CAAC;4BACd,CAAC,CAAC;4BAEF,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC9B,sCAAsC;gCACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oCACvD,OAAO,CAAC,GAAG,CACT,kCAAkC,EAClC,IAAI,CAAC,SAAS,CAAC;wCACb,GAAG;wCACH,QAAQ,EAAE,KAAK;wCACf,YAAY;wCACZ,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;qCACzC,CAAC,CACH,CAAC;gCACJ,CAAC;gCACD,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gCACnC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;4BACvB,CAAC;4BACD,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC5B,MAAM,MAAM,GAAG,GAAG,CAAC;gCACnB,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gCAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gCAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;4BACzB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO;gBACP,MAAM;gBACN,qEAAqE;gBACrE,oCAAoC;gBACpC,MAAM;gBACN,kDAAkD;gBAClD,cAAc;gBACd,kBAAkB;gBAClB,6BAA6B;gBAC7B,kBAAkB;gBAClB,aAAa;gBACb,QAAQ;gBAER,kBAAkB;gBAClB,yBAAyB;gBACzB,sBAAsB;gBACtB,UAAU;gBACV,qCAAqC;gBACrC,qCAAqC;gBACrC,iBAAiB;gBACjB,uBAAuB;gBACvB,iCAAiC;gBACjC,aAAa;gBACb,iBAAiB;gBACjB,sCAAsC;gBACtC,0DAA0D;gBAC1D,aAAa;gBACb,WAAW;gBACX,cAAc;gBACd,WAAW;gBACX,SAAS;gBACT,OAAO;gBACP,iGAAiG;gBACjG,IAAI;gBAEJ,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,SAAS,CAAC;oBACb,WAAW,EAAE,CAAC;oBACd,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,cAAc,CAAC,IAAI;oBAChC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;wBACvB,OAAO,EAAE;4BACP;gCACE,OAAO,EAAE;oCACP,OAAO,EAAE,IAAI,CAAC,SAAS,CACrB;wCACE,SAAS;wCACT,mBAAmB;qCACpB,EACD,IAAI,EACJ,CAAC,CACF;oCACD,IAAI,EAAE,WAAW;iCAClB;gCACD,aAAa,EAAE,MAAM;gCACrB,KAAK,EAAE,CAAC;6BACT;yBACF;qBACF,CAAC;iBACH,CAAC,CACH,CAAC;gBAEF,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,eAAe;gBACf,uFAAuF;gBACvF,KAAK;gBAEL,uCAAuC;gBACvC,kBAAkB;gBAClB,mCAAmC;gBACnC,sEAAsE;gBACtE,OAAO;gBACP,IAAI;gBAEJ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAC3B,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAC3C,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAC/D,EACD,IAAI,EACJ,CAAC,CACF,CAAC;gBAEF,MAAM,eAAe,GAAG,MAAM,yBAAyB,CAAC;oBACtD,MAAM;oBACN,KAAK,EAAE,cAAc;oBACrB,MAAM;oBACN,KAAK;iBACN,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CACV,wCAAwC,EACxC,cAAc,CAAC,IAAI,EACnB,MAAM,EACN,cAAc,CAAC,IAAI,CACpB,CAAC;oBACF,OAAO,IAAI,CAAC;oBACZ,0CAA0C;gBAC5C,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAEvC,OAAO,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,mBAAmB,EAAE,eAAe,CAAC,mBAAmB;oBACxD,OAAO,EAAE,eAAe,CAAC,OAAO;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CACF,CACF,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;QAExD,MAAM,iBAAiB,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;QAC3C,MAAM,2BAA2B,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAE/D,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9D,MAAM,aAAa,GAAkB;YACnC,QAAQ;YACR,qBAAqB;YACrB,iBAAiB;YACjB,2BAA2B;YAC3B,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;SAC1D,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,kBAAkB,GAAG,IAAI,kBAAkB,CACzC;gBACE,IAAI,mBAAmB,EAAE;gBACzB,IAAI,qBAAqB,EAAE;gBAC3B,IAAI,0BAA0B,EAAE;gBAChC,IAAI,UAAU,EAAE;gBAChB,IAAI,kBAAkB,EAAE;aACzB,EACD,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,aAAa,CACd,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,gBAAgB,CACjC,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,aAAa,EACb,eAAe,EACf,KAAK,CAAC,QAAQ,CACf,CAAC;QACJ,CAAC;QAED,uDAAuD;QACvD,gFAAgF;QAChF,wEAAwE;QACxE,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAClE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpD,KAAK,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,kBAAkB,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QAChE,CAAC;QAED,qDAAqD;QACrD,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,kBAAkB,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QAClE,CAAC;QAED,uDAAuD;QACvD,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,kBAAkB,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC;QACtE,CAAC;QAED,6EAA6E;QAC7E,+EAA+E;QAC/E,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAClD,KAAK,CAAC,yBAAyB,CAChC,EAAE,CAAC;gBACF,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjD,gCAAgC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACnD,CAAC;gBACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,0CAA0C;oBAC1C,gCAAgC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;wBAC/C,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,aAAa,EAAE,SAAS,CAAC,aAAa;wBACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;wBAC9B,oBAAoB,EAAE,IAAI;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,gFAAgF;QAChF,mFAAmF;QACnF,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CACnD,gCAAgC,CACjC,EAAE,CAAC;gBACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClE,SAAS,CAAC,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,IAAI,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,kBAAkB,CAAC,gCAAgC,CACjD,gCAAgC,CACjC,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,kBAAkB,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACxD,oDAAoD;YACpD,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC;gBACpE,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;YACjC,CAAC;YAED,MAAM,iBAAiB,CAAC;gBACtB,MAAM;gBACN,YAAY;gBACZ,KAAK,EAAE,UAAU;gBACjB,kBAAkB;gBAClB,eAAe,EAAE,KAAK,CAAC,IAAI;gBAC3B,KAAK;aACN,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;YACjD,KAAK,CAAC,aAAa,GAAG,kBAAkB,CAAC;QAC3C,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,oCAAoC,EACpC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,IAAI,EACX,KAAK,CAAC,IAAI,EACV,MAAM,EACN,KAAK,CAAC,IAAI,EACV,MAAM,EACN,KAAK,CACN,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,IAAsB;IAEtB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,GACxE,IAAI,CAAC;IAEP,8BAA8B;IAC9B,6EAA6E;IAC7E,wDAAwD;IACxD,8CAA8C;IAC9C,gBAAgB,EAAE,CAAC;IAEnB,IACE,UAAU;QACV,CAAC,eAAe;QAChB,CAAC,kBAAkB;QACnB,eAAe,EAAE,EACjB,CAAC;QACD,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;QACrD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE5D,MAAM,WAAW,GAA4B;YAC3C,MAAM;YACN,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,QAAQ;YACR,IAAI;YACJ,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;aAC3D;YACD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,OAAO,CAAC,GAAG,CACT,mDAAmD,MAAM,CAAC,IAAI,EAAE,CACjE,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEjD,qDAAqD;YACrD,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,aAAoB,CAAC;YAClD,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,8BAA8B,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,EACjE,KAAK,CACN,CAAC;YACF,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"analyzeScope.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/analyzeScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -197,6 +197,7 @@ export class ASTScopeAnalyzer {
|
|
|
197
197
|
statementInfo: this.statementInfo,
|
|
198
198
|
typeChecker: this.fileAnalyzer.typeChecker,
|
|
199
199
|
addEquivalence: (leftSide, rightSide) => this.addEquivalence(leftSide, rightSide),
|
|
200
|
+
addMultipleEquivalencies: (leftSide, rightSides) => this.addMultipleEquivalencies(leftSide, rightSides),
|
|
200
201
|
addType: (path, type) => this.addType(path, type),
|
|
201
202
|
addEnvironmentVariable: (variablePath) => this.addEnvironmentVariable(variablePath),
|
|
202
203
|
markUnsupported: (node, message, isBlocking) => this.markUnsupported(node, message, isBlocking),
|
|
@@ -487,7 +488,9 @@ export class ASTScopeAnalyzer {
|
|
|
487
488
|
nodeToSource(node, this.sourceFile));
|
|
488
489
|
}
|
|
489
490
|
/**
|
|
490
|
-
* Adds an equivalence relationship between two variable paths
|
|
491
|
+
* Adds an equivalence relationship between two variable paths.
|
|
492
|
+
* Uses overwrite semantics - if an equivalence already exists, the new value replaces it
|
|
493
|
+
* (unless the new value is 'undefined' or 'null').
|
|
491
494
|
*/
|
|
492
495
|
addEquivalence(leftSide, rightSide) {
|
|
493
496
|
// Skip adding equivalences if left side is a literal path.
|
|
@@ -509,6 +512,33 @@ export class ASTScopeAnalyzer {
|
|
|
509
512
|
this.equivalentVariables[leftSideStr] = rightSideStr;
|
|
510
513
|
}
|
|
511
514
|
}
|
|
515
|
+
/**
|
|
516
|
+
* Adds multiple equivalence relationships for a single variable path.
|
|
517
|
+
* Used for OR expressions like `x = a || b` where x is equivalent to both a and b.
|
|
518
|
+
* The values are stored as an array to track all possible sources.
|
|
519
|
+
*/
|
|
520
|
+
addMultipleEquivalencies(leftSide, rightSides) {
|
|
521
|
+
if (leftSide?.isLiteral()) {
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
const leftSideStr = leftSide?.toLeftHandSideString();
|
|
525
|
+
if (!leftSideStr)
|
|
526
|
+
return;
|
|
527
|
+
// Filter out invalid paths and convert to strings
|
|
528
|
+
const validRightSides = rightSides
|
|
529
|
+
.map((r) => r?.toRightHandSideString())
|
|
530
|
+
.filter((r) => !!r && r !== leftSideStr);
|
|
531
|
+
// Remove duplicates while preserving order
|
|
532
|
+
const uniqueRightSides = [...new Set(validRightSides)];
|
|
533
|
+
// Filter out 'undefined' and 'null' unless they're the only values
|
|
534
|
+
const meaningfulValues = uniqueRightSides.filter((v) => v !== 'undefined' && v !== 'null');
|
|
535
|
+
const finalValues = meaningfulValues.length > 0 ? meaningfulValues : uniqueRightSides;
|
|
536
|
+
if (finalValues.length === 0)
|
|
537
|
+
return;
|
|
538
|
+
// Store as single value if only one, otherwise as array
|
|
539
|
+
this.equivalentVariables[leftSideStr] =
|
|
540
|
+
finalValues.length === 1 ? finalValues[0] : finalValues;
|
|
541
|
+
}
|
|
512
542
|
/**
|
|
513
543
|
* Adds a type for a variable path
|
|
514
544
|
*/
|
|
@@ -628,19 +658,35 @@ export class ASTScopeAnalyzer {
|
|
|
628
658
|
const pathStr = path.toString();
|
|
629
659
|
// Update the type for the given path
|
|
630
660
|
this.structure[pathStr] = newType;
|
|
631
|
-
// Also update the type for any equivalent path
|
|
661
|
+
// Also update the type for any equivalent path(s)
|
|
632
662
|
// e.g., if "state" -> "signature[0]", update "signature[0]" as well
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
663
|
+
const rawEquivalentPath = this.equivalentVariables[pathStr];
|
|
664
|
+
const equivalentPaths = Array.isArray(rawEquivalentPath)
|
|
665
|
+
? rawEquivalentPath
|
|
666
|
+
: rawEquivalentPath
|
|
667
|
+
? [rawEquivalentPath]
|
|
668
|
+
: [];
|
|
669
|
+
for (const equivalentPath of equivalentPaths) {
|
|
670
|
+
if (typeof equivalentPath === 'string') {
|
|
671
|
+
this.structure[equivalentPath] = newType;
|
|
672
|
+
}
|
|
636
673
|
}
|
|
637
674
|
// For property paths like "data.status", check if the base has an equivalence
|
|
638
675
|
// e.g., if "data" -> "signature[0]", transform "data.status" to "signature[0].status"
|
|
639
|
-
for (const [varPath,
|
|
676
|
+
for (const [varPath, rawEquivalence] of Object.entries(this.equivalentVariables)) {
|
|
640
677
|
if (pathStr.startsWith(varPath + '.')) {
|
|
678
|
+
const equivalences = Array.isArray(rawEquivalence)
|
|
679
|
+
? rawEquivalence
|
|
680
|
+
: rawEquivalence
|
|
681
|
+
? [rawEquivalence]
|
|
682
|
+
: [];
|
|
641
683
|
const suffix = pathStr.slice(varPath.length);
|
|
642
|
-
const
|
|
643
|
-
|
|
684
|
+
for (const equivalence of equivalences) {
|
|
685
|
+
if (typeof equivalence === 'string') {
|
|
686
|
+
const transformedPath = equivalence + suffix;
|
|
687
|
+
this.structure[transformedPath] = newType;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
644
690
|
}
|
|
645
691
|
}
|
|
646
692
|
}
|