@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.
Files changed (171) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +2 -2
  4. package/analyzer-template/packages/ai/index.ts +6 -1
  5. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +39 -17
  6. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +67 -9
  7. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +308 -50
  8. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +15 -6
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +664 -242
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +20 -1
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +35 -13
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +160 -0
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +289 -83
  17. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +269 -1
  18. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
  19. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +11 -3
  20. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  21. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +297 -7
  22. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
  23. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  24. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  25. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
  26. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
  27. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  28. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  29. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  30. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  31. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  32. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  33. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  34. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  35. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +20 -6
  36. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +14 -4
  37. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  38. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
  39. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  40. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +57 -13
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +29 -0
  43. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +35 -4
  44. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
  45. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +199 -17
  46. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  47. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  48. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  49. package/analyzer-template/packages/aws/package.json +1 -1
  50. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  51. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  52. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  53. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  54. package/analyzer-template/packages/github/package.json +1 -1
  55. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
  56. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  57. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  58. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  59. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  60. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  61. package/analyzer-template/project/constructMockCode.ts +54 -9
  62. package/analyzer-template/project/writeMockDataTsx.ts +73 -2
  63. package/background/src/lib/virtualized/project/constructMockCode.js +45 -3
  64. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  65. package/background/src/lib/virtualized/project/writeMockDataTsx.js +71 -2
  66. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  67. package/codeyam-cli/scripts/apply-setup.js +146 -0
  68. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  69. package/codeyam-cli/src/commands/debug.js +7 -5
  70. package/codeyam-cli/src/commands/debug.js.map +1 -1
  71. package/codeyam-cli/src/utils/install-skills.js +22 -0
  72. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  73. package/codeyam-cli/src/utils/reviewedRules.js +92 -0
  74. package/codeyam-cli/src/utils/reviewedRules.js.map +1 -0
  75. package/codeyam-cli/src/webserver/build/client/assets/globals-CX9f-5xM.css +1 -0
  76. package/codeyam-cli/src/webserver/build/client/assets/{manifest-7522edd4.js → manifest-bba56ec1.js} +1 -1
  77. package/codeyam-cli/src/webserver/build/client/assets/memory-DuTFSyJ2.js +92 -0
  78. package/codeyam-cli/src/webserver/build/client/assets/{root-eVAaavTS.js → root-DTfSQARG.js} +6 -6
  79. package/codeyam-cli/src/webserver/build/server/assets/{index-DVzYx8PN.js → index-TD1f-DHV.js} +1 -1
  80. package/codeyam-cli/src/webserver/build/server/assets/server-build-BQ-1XyEa.js +258 -0
  81. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  82. package/codeyam-cli/src/webserver/build-info.json +5 -5
  83. package/codeyam-cli/templates/codeyam:memory.md +174 -233
  84. package/codeyam-cli/templates/codeyam:new-rule.md +41 -2
  85. package/codeyam-cli/templates/rule-reflection-hook.py +161 -0
  86. package/codeyam-cli/templates/rules-instructions.md +126 -0
  87. package/package.json +1 -1
  88. package/packages/ai/index.js +2 -1
  89. package/packages/ai/index.js.map +1 -1
  90. package/packages/ai/src/lib/analyzeScope.js +29 -12
  91. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  92. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +54 -8
  93. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  94. package/packages/ai/src/lib/astScopes/processExpression.js +239 -43
  95. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  96. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +503 -165
  97. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  98. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  99. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  100. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  101. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  102. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +22 -1
  103. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  104. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +34 -9
  105. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  106. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +159 -0
  107. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  108. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  109. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  110. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +237 -73
  111. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  112. package/packages/ai/src/lib/generateEntityScenarioData.js +195 -1
  113. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  114. package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
  115. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  116. package/packages/ai/src/lib/generateExecutionFlows.js +10 -2
  117. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  118. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +209 -3
  119. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  120. package/packages/ai/src/lib/mergeStatements.js +70 -51
  121. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  122. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  123. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  124. package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
  125. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  126. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  127. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  128. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  129. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  130. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  131. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  132. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  133. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  134. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  135. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  136. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  137. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  138. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  139. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  140. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  141. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  142. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  143. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +13 -5
  144. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  145. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +14 -4
  146. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  147. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  148. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  149. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
  150. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  151. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  152. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  153. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  154. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  155. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +52 -10
  156. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  157. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +25 -8
  158. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  159. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +34 -4
  160. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  161. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
  162. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  163. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +168 -9
  164. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  165. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  166. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  167. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  168. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  169. package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
  170. package/codeyam-cli/src/webserver/build/client/assets/memory-yxFcrxBX.js +0 -92
  171. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeyam/codeyam-cli",
3
- "version": "0.1.0-staging.323686",
3
+ "version": "0.1.0-staging.483fdc2",
4
4
  "description": "Local development CLI for CodeYam analysis",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/index.ts"],"names":[],"mappings":"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"}
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, value] of Object.entries(mapping)) {
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
- if (value.includes(scopeText)) {
279
- // DEBUG: Log when replacement happens
280
- if (key.includes('Fetcher') || key.includes('fetcher')) {
281
- console.log('CodeYam DEBUG value replacement:', JSON.stringify({
282
- key,
283
- oldValue: value,
284
- childScopeId,
285
- scopeTextPreview: scopeText.slice(0, 50),
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":"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"}
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 equivalentPath = this.equivalentVariables[pathStr];
634
- if (equivalentPath) {
635
- this.structure[equivalentPath] = newType;
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, equivalence] of Object.entries(this.equivalentVariables)) {
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 transformedPath = equivalence + suffix;
643
- this.structure[transformedPath] = newType;
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
  }