strray-ai 1.7.2 → 1.7.3

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 (189) hide show
  1. package/.opencode/hooks/post-commit +152 -55
  2. package/.opencode/hooks/post-commit.backup +110 -174
  3. package/.opencode/hooks/post-push +47 -64
  4. package/.opencode/hooks/post-push.backup +34 -38
  5. package/.opencode/strray/features.json +3 -3
  6. package/.opencode/strray/routing-mappings.json +90 -34
  7. package/AGENTS.md +7 -2
  8. package/dist/analytics/anonymization-engine.d.ts +108 -0
  9. package/dist/analytics/anonymization-engine.d.ts.map +1 -0
  10. package/dist/analytics/anonymization-engine.js +352 -0
  11. package/dist/analytics/anonymization-engine.js.map +1 -0
  12. package/dist/analytics/consent-manager.d.ts +94 -0
  13. package/dist/analytics/consent-manager.d.ts.map +1 -0
  14. package/dist/analytics/consent-manager.js +257 -0
  15. package/dist/analytics/consent-manager.js.map +1 -0
  16. package/dist/analytics/emerging-pattern-detector.d.ts +68 -0
  17. package/dist/analytics/emerging-pattern-detector.d.ts.map +1 -0
  18. package/dist/analytics/emerging-pattern-detector.js +250 -0
  19. package/dist/analytics/emerging-pattern-detector.js.map +1 -0
  20. package/dist/analytics/pattern-learning-engine.d.ts +81 -0
  21. package/dist/analytics/pattern-learning-engine.d.ts.map +1 -0
  22. package/dist/analytics/pattern-learning-engine.js +262 -0
  23. package/dist/analytics/pattern-learning-engine.js.map +1 -0
  24. package/dist/analytics/pattern-performance-tracker.d.ts +89 -0
  25. package/dist/analytics/pattern-performance-tracker.d.ts.map +1 -0
  26. package/dist/analytics/pattern-performance-tracker.js +289 -0
  27. package/dist/analytics/pattern-performance-tracker.js.map +1 -0
  28. package/dist/analytics/prompt-pattern-analyzer.d.ts +100 -0
  29. package/dist/analytics/prompt-pattern-analyzer.d.ts.map +1 -0
  30. package/dist/analytics/prompt-pattern-analyzer.js +372 -0
  31. package/dist/analytics/prompt-pattern-analyzer.js.map +1 -0
  32. package/dist/analytics/routing-performance-analyzer.d.ts +102 -0
  33. package/dist/analytics/routing-performance-analyzer.d.ts.map +1 -0
  34. package/dist/analytics/routing-performance-analyzer.js +342 -0
  35. package/dist/analytics/routing-performance-analyzer.js.map +1 -0
  36. package/dist/analytics/routing-refiner.d.ts +105 -0
  37. package/dist/analytics/routing-refiner.d.ts.map +1 -0
  38. package/dist/analytics/routing-refiner.js +381 -0
  39. package/dist/analytics/routing-refiner.js.map +1 -0
  40. package/dist/cli/commands/analytics-disable.d.ts +10 -0
  41. package/dist/cli/commands/analytics-disable.d.ts.map +1 -0
  42. package/dist/cli/commands/analytics-disable.js +73 -0
  43. package/dist/cli/commands/analytics-disable.js.map +1 -0
  44. package/dist/cli/commands/analytics-enable-action.d.ts +9 -0
  45. package/dist/cli/commands/analytics-enable-action.d.ts.map +1 -0
  46. package/dist/cli/commands/analytics-enable-action.js +83 -0
  47. package/dist/cli/commands/analytics-enable-action.js.map +1 -0
  48. package/dist/cli/commands/analytics-preview.d.ts +10 -0
  49. package/dist/cli/commands/analytics-preview.d.ts.map +1 -0
  50. package/dist/cli/commands/analytics-preview.js +107 -0
  51. package/dist/cli/commands/analytics-preview.js.map +1 -0
  52. package/dist/cli/commands/analytics-status.d.ts +10 -0
  53. package/dist/cli/commands/analytics-status.d.ts.map +1 -0
  54. package/dist/cli/commands/analytics-status.js +68 -0
  55. package/dist/cli/commands/analytics-status.js.map +1 -0
  56. package/dist/cli/index.js +6 -3
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/core/adaptive-kernel.d.ts +110 -0
  59. package/dist/core/adaptive-kernel.d.ts.map +1 -0
  60. package/dist/core/adaptive-kernel.js +193 -0
  61. package/dist/core/adaptive-kernel.js.map +1 -0
  62. package/dist/core/kernel-patterns.d.ts +105 -0
  63. package/dist/core/kernel-patterns.d.ts.map +1 -0
  64. package/dist/core/kernel-patterns.js +328 -0
  65. package/dist/core/kernel-patterns.js.map +1 -0
  66. package/dist/core/orchestrator.d.ts +1 -0
  67. package/dist/core/orchestrator.d.ts.map +1 -1
  68. package/dist/core/orchestrator.js +40 -11
  69. package/dist/core/orchestrator.js.map +1 -1
  70. package/dist/delegation/agent-delegator.d.ts +1 -0
  71. package/dist/delegation/agent-delegator.d.ts.map +1 -1
  72. package/dist/delegation/agent-delegator.js +24 -2
  73. package/dist/delegation/agent-delegator.js.map +1 -1
  74. package/dist/delegation/task-skill-router.d.ts +269 -5
  75. package/dist/delegation/task-skill-router.d.ts.map +1 -1
  76. package/dist/delegation/task-skill-router.js +810 -23
  77. package/dist/delegation/task-skill-router.js.map +1 -1
  78. package/dist/postprocessor/PostProcessor.d.ts +10 -0
  79. package/dist/postprocessor/PostProcessor.d.ts.map +1 -1
  80. package/dist/postprocessor/PostProcessor.js +87 -17
  81. package/dist/postprocessor/PostProcessor.js.map +1 -1
  82. package/dist/processors/agents-md-validation-processor.d.ts +1 -0
  83. package/dist/processors/agents-md-validation-processor.d.ts.map +1 -1
  84. package/dist/processors/agents-md-validation-processor.js +34 -12
  85. package/dist/processors/agents-md-validation-processor.js.map +1 -1
  86. package/dist/processors/processor-manager.d.ts +7 -0
  87. package/dist/processors/processor-manager.d.ts.map +1 -1
  88. package/dist/processors/processor-manager.js +93 -0
  89. package/dist/processors/processor-manager.js.map +1 -1
  90. package/dist/processors/test-auto-creation-processor.d.ts.map +1 -1
  91. package/dist/processors/test-auto-creation-processor.js +52 -38
  92. package/dist/processors/test-auto-creation-processor.js.map +1 -1
  93. package/dist/scripts/analytics/daily-routing-analysis.d.ts +18 -0
  94. package/dist/scripts/analytics/daily-routing-analysis.d.ts.map +1 -0
  95. package/dist/scripts/analytics/daily-routing-analysis.js +268 -0
  96. package/dist/scripts/analytics/daily-routing-analysis.js.map +1 -0
  97. package/dist/scripts/analytics/index.d.ts +15 -0
  98. package/dist/scripts/analytics/index.d.ts.map +1 -0
  99. package/dist/scripts/analytics/index.js +17 -0
  100. package/dist/scripts/analytics/index.js.map +1 -0
  101. package/dist/scripts/test-p9.d.ts +15 -0
  102. package/dist/scripts/test-p9.d.ts.map +1 -0
  103. package/dist/scripts/test-p9.js +220 -0
  104. package/dist/scripts/test-p9.js.map +1 -0
  105. package/package.json +6 -2
  106. package/scripts/node/kernel-e2e-test.mjs +168 -0
  107. package/scripts/node/kernel-framework-test.mjs +127 -0
  108. package/scripts/node/kernel-live-test.mjs +147 -0
  109. package/scripts/node/kernel-real-framework-test.mjs +103 -0
  110. package/scripts/node/kernel-update.cjs +379 -0
  111. package/scripts/node/reflection-check.sh +245 -27
  112. package/scripts/node/test-simple-names-comprehensive.mjs +221 -0
  113. package/scripts/node/test-simple-names.mjs +39 -0
  114. package/dist/agents/documentation-writer.d.ts +0 -9
  115. package/dist/agents/documentation-writer.d.ts.map +0 -1
  116. package/dist/agents/documentation-writer.js +0 -85
  117. package/dist/agents/documentation-writer.js.map +0 -1
  118. package/dist/agents/explore.d.ts +0 -8
  119. package/dist/agents/explore.d.ts.map +0 -1
  120. package/dist/agents/explore.js +0 -55
  121. package/dist/agents/explore.js.map +0 -1
  122. package/dist/agents/librarian.d.ts +0 -3
  123. package/dist/agents/librarian.d.ts.map +0 -1
  124. package/dist/agents/librarian.js +0 -84
  125. package/dist/agents/librarian.js.map +0 -1
  126. package/dist/agents/marketing-expert.d.ts +0 -9
  127. package/dist/agents/marketing-expert.d.ts.map +0 -1
  128. package/dist/agents/marketing-expert.js +0 -112
  129. package/dist/agents/marketing-expert.js.map +0 -1
  130. package/dist/agents/oracle.d.ts +0 -8
  131. package/dist/agents/oracle.d.ts.map +0 -1
  132. package/dist/agents/oracle.js +0 -51
  133. package/dist/agents/oracle.js.map +0 -1
  134. package/dist/agents/seo-copywriter.d.ts +0 -10
  135. package/dist/agents/seo-copywriter.d.ts.map +0 -1
  136. package/dist/agents/seo-copywriter.js +0 -73
  137. package/dist/agents/seo-copywriter.js.map +0 -1
  138. package/dist/agents/seo-specialist.d.ts +0 -9
  139. package/dist/agents/seo-specialist.d.ts.map +0 -1
  140. package/dist/agents/seo-specialist.js +0 -54
  141. package/dist/agents/seo-specialist.js.map +0 -1
  142. package/dist/agents/test-architect.d.ts +0 -3
  143. package/dist/agents/test-architect.d.ts.map +0 -1
  144. package/dist/agents/test-architect.js +0 -96
  145. package/dist/agents/test-architect.js.map +0 -1
  146. package/dist/mcps/enhanced-orchestrator.server.d.ts +0 -14
  147. package/dist/mcps/enhanced-orchestrator.server.d.ts.map +0 -1
  148. package/dist/mcps/enhanced-orchestrator.server.js +0 -266
  149. package/dist/mcps/enhanced-orchestrator.server.js.map +0 -1
  150. package/dist/mcps/knowledge-skills/analyzer.server.d.ts +0 -7
  151. package/dist/mcps/knowledge-skills/analyzer.server.d.ts.map +0 -1
  152. package/dist/mcps/knowledge-skills/analyzer.server.js +0 -282
  153. package/dist/mcps/knowledge-skills/analyzer.server.js.map +0 -1
  154. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts +0 -48
  155. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts.map +0 -1
  156. package/dist/mcps/knowledge-skills/documentation-generation.server.js +0 -1238
  157. package/dist/mcps/knowledge-skills/documentation-generation.server.js.map +0 -1
  158. package/dist/mcps/knowledge-skills/explore.server.d.ts +0 -21
  159. package/dist/mcps/knowledge-skills/explore.server.d.ts.map +0 -1
  160. package/dist/mcps/knowledge-skills/explore.server.js +0 -582
  161. package/dist/mcps/knowledge-skills/explore.server.js.map +0 -1
  162. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts +0 -8
  163. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts.map +0 -1
  164. package/dist/mcps/knowledge-skills/marketing-expert.server.js +0 -356
  165. package/dist/mcps/knowledge-skills/marketing-expert.server.js.map +0 -1
  166. package/dist/mcps/knowledge-skills/oracle.server.d.ts +0 -25
  167. package/dist/mcps/knowledge-skills/oracle.server.d.ts.map +0 -1
  168. package/dist/mcps/knowledge-skills/oracle.server.js +0 -569
  169. package/dist/mcps/knowledge-skills/oracle.server.js.map +0 -1
  170. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts +0 -8
  171. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts.map +0 -1
  172. package/dist/mcps/knowledge-skills/seo-copywriter.server.js +0 -251
  173. package/dist/mcps/knowledge-skills/seo-copywriter.server.js.map +0 -1
  174. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts +0 -8
  175. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts.map +0 -1
  176. package/dist/mcps/knowledge-skills/seo-specialist.server.js +0 -211
  177. package/dist/mcps/knowledge-skills/seo-specialist.server.js.map +0 -1
  178. package/dist/mcps/librarian.server.d.ts +0 -17
  179. package/dist/mcps/librarian.server.d.ts.map +0 -1
  180. package/dist/mcps/librarian.server.js +0 -382
  181. package/dist/mcps/librarian.server.js.map +0 -1
  182. package/dist/optimization/performance-optimizer.d.ts +0 -179
  183. package/dist/optimization/performance-optimizer.d.ts.map +0 -1
  184. package/dist/optimization/performance-optimizer.js +0 -556
  185. package/dist/optimization/performance-optimizer.js.map +0 -1
  186. package/dist/utils/memory-pool.d.ts +0 -90
  187. package/dist/utils/memory-pool.d.ts.map +0 -1
  188. package/dist/utils/memory-pool.js +0 -245
  189. package/dist/utils/memory-pool.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # StrRay Post-Processor post-push Hook
2
+ # StringRay Post-Processor post-push Hook
3
3
  # Automatically triggers post-processor after post-push
4
4
 
5
5
  # Get hook type from script name
@@ -46,25 +46,17 @@ fi
46
46
  (
47
47
  cd "$(dirname "$0")/../.." # Navigate to project root
48
48
 
49
- # Find the StrRay plugin in node_modules or current project (development)
49
+ # Find the StringRay plugin in node_modules or current project (development)
50
50
  STRRAY_PLUGIN=""
51
- STRRAY_DIST=""
52
51
  if [ -d "node_modules/strray-framework" ]; then
53
52
  STRRAY_PLUGIN="node_modules/strray-framework"
54
- STRRAY_DIST="node_modules/strray-framework/dist"
55
- elif [ -d "node_modules/strray-ai" ]; then
56
- STRRAY_PLUGIN="node_modules/strray-ai"
57
- STRRAY_DIST="node_modules/strray-ai/dist"
58
53
  elif [ -d "node_modules/@strray/strray-framework" ]; then
59
54
  STRRAY_PLUGIN="node_modules/@strray/strray-framework"
60
- STRRAY_DIST="node_modules/@strray/strray-framework/dist"
61
- elif [ -d "node_modules/oh-my-opencode/plugins/strray-framework" ]; then
62
- STRRAY_PLUGIN="node_modules/oh-my-opencode/plugins/strray-framework"
63
- STRRAY_DIST="node_modules/oh-my-opencode/plugins/strray-framework/dist"
55
+ elif [ -d "node_modules/OpenCode/plugins/strray-framework" ]; then
56
+ STRRAY_PLUGIN="node_modules/OpenCode/plugins/strray-framework"
64
57
  elif [ -f "dist/postprocessor/PostProcessor.js" ]; then
65
58
  # Development mode - use current project
66
59
  STRRAY_PLUGIN="."
67
- STRRAY_DIST="dist"
68
60
  fi
69
61
 
70
62
  if command -v node >/dev/null 2>&1 && [ -n "$STRRAY_PLUGIN" ]; then
@@ -74,7 +66,6 @@ fi
74
66
  export BRANCH="$BRANCH"
75
67
  export AUTHOR="$AUTHOR"
76
68
  export STRRAY_PLUGIN="$STRRAY_PLUGIN"
77
- export STRRAY_DIST="$STRRAY_DIST"
78
69
  export MONITORING_LEVEL="$MONITORING_LEVEL"
79
70
  export IS_FULL_MONITORING="$([ "$MONITORING_LEVEL" = "full" ] && echo "true" || echo "false")"
80
71
 
@@ -94,17 +85,17 @@ fi
94
85
  const result = await validator.validate();
95
86
 
96
87
  if (result.warnings.length > 0) {
97
- console.log('⚠️ ' + result.warnings.length + ' warning(s) found:');
98
- result.warnings.forEach(w => console.log(' ' + w));
88
+ await frameworkLogger.log('-git-hook-trigger', '-result-warnings-length-warning-s-found-', 'info', { message: '⚠️ ' + result.warnings.length + ' warning(s) found:' });
89
+ result.warnings.forEach(w => await frameworkLogger.log('-git-hook-trigger', '-w-', 'info', { message: ' ' + w) });
99
90
  }
100
91
 
101
92
  if (!result.passed) {
102
- console.log('❌ ' + result.errors.length + ' error(s) found:');
103
- result.errors.forEach(e => console.log(' ' + e));
93
+ await frameworkLogger.log('-git-hook-trigger', '-result-errors-length-error-s-found-', 'error', { message: '❌ ' + result.errors.length + ' error(s) found:' });
94
+ result.errors.forEach(e => await frameworkLogger.log('-git-hook-trigger', '-e-', 'info', { message: ' ' + e) });
104
95
  process.exit(1);
105
96
  }
106
97
 
107
- console.log('✅ Post-commit: Validation passed in ' + result.duration + 'ms');
98
+ await frameworkLogger.log('-git-hook-trigger', '-post-commit-validation-passed-in-result-duration-', 'success', { message: '✅ Post-commit: Validation passed in ' + result.duration + 'ms' });
108
99
  } catch (error) {
109
100
  console.error('❌ Post-commit validation failed:', error instanceof Error ? error.message : String(error));
110
101
  process.exit(1);
@@ -117,56 +108,34 @@ fi
117
108
 
118
109
  # Log metrics for monitoring (convert to milliseconds)
119
110
  DURATION_MS=$((DURATION * 1000))
120
- echo "HOOK_METRICS: post-commit duration=${DURATION_MS}ms exit_code=${EXIT_CODE}" >&2
121
-
122
- # Record metrics using metrics collector (direct import for reliability)
111
+ # LOG CLEANUP: Remove old log files after validation
112
+ # Use relative path from CWD - works in both dev and consumer
123
113
  node -e "
124
114
  (async () => {
125
115
  try {
126
- const { HookMetricsCollector } = await import('./dist/postprocessor/validation/HookMetricsCollector.js');
127
- const collector = new HookMetricsCollector();
128
- collector.recordMetrics('post-commit', ${DURATION_MS}, ${EXIT_CODE});
129
- } catch (error) {
130
- // Silently fail if metrics collection fails
131
- }
132
- })();
133
- " 2>/dev/null || true
134
-
135
- [ $EXIT_CODE -eq 0 ] && exit 0 || exit 1
136
- else
137
- # FULL MONITORING: Comprehensive analysis for post-push
138
- # Timeout: 5 minutes max, comprehensive CI/CD validation
139
- START_TIME=$(date +%s)
140
- timeout 300 node -e "
141
- (async () => {
142
- try {
143
- console.log('🚀 Post-push: Comprehensive validation initiated');
144
-
145
- // Use PostProcessor from environment variable
146
- const STRRAY_DIST = process.env.STRRAY_DIST || './dist';
147
- const { PostProcessor } = await import(STRRAY_DIST + '/postprocessor/PostProcessor.js');
148
- const { StrRayStateManager } = await import(STRRAY_DIST + '/state/state-manager.js');
149
-
150
- const stateManager = new StrRayStateManager();
151
- const postProcessor = new PostProcessor(stateManager, null, {
152
- reporting: { enabled: true, autoGenerate: true, reportThreshold: 10 }
116
+ // Use dynamic import that works in both dev and consumer
117
+ const basePath = process.env.STRRAY_BASE_PATH || '.';
118
+ const { cleanupLogFiles } = await import(basePath + '/dist/postprocessor/triggers/GitHookTrigger.js');
119
+ const result = await cleanupLogFiles({
120
+ maxAgeHours: 24,
121
+ excludePatterns: ['logs/framework/activity.log', 'logs/agents/refactoring-log.md', 'current-session.log'],
122
+ directories: ['logs/'],
123
+ enabled: true
153
124
  });
154
-
155
- // Run full post-processor loop
156
- const context = {
157
- commitSha: process.env.COMMIT_SHA || 'unknown',
158
- branch: process.env.BRANCH || 'main',
159
- files: [],
160
- timestamp: Date.now()
161
- };
162
-
163
- await postProcessor.executePostProcessorLoop(context);
164
- console.log('✅ Post-push: Comprehensive validation passed');
125
+ if (result.cleaned > 0) {
126
+ await frameworkLogger.log('-git-hook-trigger', '-cleaned-result-cleaned-old-log-files-', 'info', { message: `🧹 Cleaned ${result.cleaned} old log files` });
127
+ }
128
+ if (result.errors.length > 0) {
129
+ console.error('Log cleanup errors:', result.errors);
130
+ }
165
131
  } catch (error) {
166
- // Don't fail the push for validation errors
167
- console.log('⚠️ Post-push: Validation skipped (' + (error instanceof Error ? error.message : 'error') + ')');
132
+ console.error('Log cleanup failed:', error.message);
168
133
  }
169
134
  })();
135
+ "
136
+
137
+ echo "HOOK_METRICS: post-commit duration=${DURATION_MS}ms exit_code=${EXIT_CODE}" >&2
138
+ collector.recordMetrics('post-commit', ${DURATION_MS}, ${EXIT_CODE});
170
139
  " 2>/dev/null
171
140
  EXIT_CODE=$?
172
141
  END_TIME=$(date +%s)
@@ -176,12 +145,26 @@ fi
176
145
  DURATION_MS=$((DURATION * 1000))
177
146
  echo "HOOK_METRICS: post-push duration=${DURATION_MS}ms exit_code=${EXIT_CODE}" >&2
178
147
 
179
- # Metrics collection - simplified, don't fail if unavailable
180
- echo "✅ Post-push hook completed in ${DURATION}s"
148
+ # Record metrics using metrics collector (direct import for reliability)
149
+ # Use environment variable for base path - works in both dev and consumer
150
+ node -e "
151
+ (async () => {
152
+ try {
153
+ const basePath = process.env.STRRAY_BASE_PATH || '.';
154
+ const distPath = process.env.STRRAY_DIST_PATH || 'dist';
155
+ const { HookMetricsCollector } = await import(basePath + '/' + distPath + '/postprocessor/validation/HookMetricsCollector.js');
156
+ const collector = new HookMetricsCollector();
157
+ collector.recordMetrics('post-push', ${DURATION_MS}, ${EXIT_CODE});
158
+ } catch (error) {
159
+ // Silently fail if metrics collection fails
160
+ }
161
+ })();
162
+ " 2>/dev/null || true
163
+
181
164
  [ $EXIT_CODE -eq 0 ] && exit 0 || exit 1
182
165
  fi
183
166
  else
184
- echo "Warning: StrRay plugin not found or Node.js not available, skipping post-processor"
167
+ echo "Warning: StringRay plugin not found or Node.js not available, skipping post-processor"
185
168
  fi
186
169
  )
187
170
 
@@ -48,15 +48,23 @@ fi
48
48
 
49
49
  # Find the StrRay plugin in node_modules or current project (development)
50
50
  STRRAY_PLUGIN=""
51
+ STRRAY_DIST=""
51
52
  if [ -d "node_modules/strray-framework" ]; then
52
53
  STRRAY_PLUGIN="node_modules/strray-framework"
54
+ STRRAY_DIST="node_modules/strray-framework/dist"
55
+ elif [ -d "node_modules/strray-ai" ]; then
56
+ STRRAY_PLUGIN="node_modules/strray-ai"
57
+ STRRAY_DIST="node_modules/strray-ai/dist"
53
58
  elif [ -d "node_modules/@strray/strray-framework" ]; then
54
59
  STRRAY_PLUGIN="node_modules/@strray/strray-framework"
60
+ STRRAY_DIST="node_modules/@strray/strray-framework/dist"
55
61
  elif [ -d "node_modules/oh-my-opencode/plugins/strray-framework" ]; then
56
62
  STRRAY_PLUGIN="node_modules/oh-my-opencode/plugins/strray-framework"
63
+ STRRAY_DIST="node_modules/oh-my-opencode/plugins/strray-framework/dist"
57
64
  elif [ -f "dist/postprocessor/PostProcessor.js" ]; then
58
65
  # Development mode - use current project
59
66
  STRRAY_PLUGIN="."
67
+ STRRAY_DIST="dist"
60
68
  fi
61
69
 
62
70
  if command -v node >/dev/null 2>&1 && [ -n "$STRRAY_PLUGIN" ]; then
@@ -66,6 +74,7 @@ fi
66
74
  export BRANCH="$BRANCH"
67
75
  export AUTHOR="$AUTHOR"
68
76
  export STRRAY_PLUGIN="$STRRAY_PLUGIN"
77
+ export STRRAY_DIST="$STRRAY_DIST"
69
78
  export MONITORING_LEVEL="$MONITORING_LEVEL"
70
79
  export IS_FULL_MONITORING="$([ "$MONITORING_LEVEL" = "full" ] && echo "true" || echo "false")"
71
80
 
@@ -132,32 +141,30 @@ fi
132
141
  (async () => {
133
142
  try {
134
143
  console.log('🚀 Post-push: Comprehensive validation initiated');
135
- // Use import resolver for environment-aware imports
136
- const { importResolver } = await import('./utils/import-resolver.js');
137
- const { ComprehensiveValidator } = await importResolver.importModule('postprocessor/validation/ComprehensiveValidator');
138
-
139
- const validator = new ComprehensiveValidator();
140
- const result = await validator.validate();
141
-
142
- if (result.warnings.length > 0) {
143
- console.log('⚠️ ' + result.warnings.length + ' warning(s) found:');
144
- result.warnings.forEach(w => console.log(' ' + w));
145
- }
146
-
147
- if (!result.passed) {
148
- console.log('❌ ' + result.errors.length + ' error(s) found:');
149
- result.errors.forEach(e => console.log(' ' + e));
150
- process.exit(1);
151
- }
152
-
153
- if (result.testResults) {
154
- console.log('🧪 Tests: ' + result.testResults.passed + '/' + result.testResults.total + ' passed');
155
- }
156
-
157
- console.log('✅ Post-push: Comprehensive validation passed in ' + result.duration + 'ms');
144
+
145
+ // Use PostProcessor from environment variable
146
+ const STRRAY_DIST = process.env.STRRAY_DIST || './dist';
147
+ const { PostProcessor } = await import(STRRAY_DIST + '/postprocessor/PostProcessor.js');
148
+ const { StrRayStateManager } = await import(STRRAY_DIST + '/state/state-manager.js');
149
+
150
+ const stateManager = new StrRayStateManager();
151
+ const postProcessor = new PostProcessor(stateManager, null, {
152
+ reporting: { enabled: true, autoGenerate: true, reportThreshold: 10 }
153
+ });
154
+
155
+ // Run full post-processor loop
156
+ const context = {
157
+ commitSha: process.env.COMMIT_SHA || 'unknown',
158
+ branch: process.env.BRANCH || 'main',
159
+ files: [],
160
+ timestamp: Date.now()
161
+ };
162
+
163
+ await postProcessor.executePostProcessorLoop(context);
164
+ console.log('✅ Post-push: Comprehensive validation passed');
158
165
  } catch (error) {
159
- console.error('❌ Post-push validation failed:', error instanceof Error ? error.message : String(error));
160
- process.exit(1);
166
+ // Don't fail the push for validation errors
167
+ console.log('⚠️ Post-push: Validation skipped (' + (error instanceof Error ? error.message : 'error') + ')');
161
168
  }
162
169
  })();
163
170
  " 2>/dev/null
@@ -169,19 +176,8 @@ fi
169
176
  DURATION_MS=$((DURATION * 1000))
170
177
  echo "HOOK_METRICS: post-push duration=${DURATION_MS}ms exit_code=${EXIT_CODE}" >&2
171
178
 
172
- # Record metrics using metrics collector (direct import for reliability)
173
- node -e "
174
- (async () => {
175
- try {
176
- const { HookMetricsCollector } = await import('./dist/postprocessor/validation/HookMetricsCollector.js');
177
- const collector = new HookMetricsCollector();
178
- collector.recordMetrics('post-push', ${DURATION_MS}, ${EXIT_CODE});
179
- } catch (error) {
180
- // Silently fail if metrics collection fails
181
- }
182
- })();
183
- " 2>/dev/null || true
184
-
179
+ # Metrics collection - simplified, don't fail if unavailable
180
+ echo "✅ Post-push hook completed in ${DURATION}s"
185
181
  [ $EXIT_CODE -eq 0 ] && exit 0 || exit 1
186
182
  fi
187
183
  else
@@ -14,7 +14,7 @@
14
14
  }
15
15
  },
16
16
  "model_routing": {
17
- "enabled": false
17
+ "enabled": true
18
18
  },
19
19
  "batch_operations": {
20
20
  "enabled": true,
@@ -33,9 +33,9 @@
33
33
  "session_persistence": true
34
34
  },
35
35
  "autonomous_reporting": {
36
- "enabled": false,
36
+ "enabled": true,
37
37
  "interval_minutes": 60,
38
- "auto_schedule": false,
38
+ "auto_schedule": true,
39
39
  "include_health_assessment": true,
40
40
  "include_agent_activities": true,
41
41
  "include_pipeline_operations": true,
@@ -1,60 +1,116 @@
1
1
  [
2
- // ===== USER-FRIENDLY ALIASES =====
3
2
  {
4
- "keywords": ["marketing", "campaign", "growth", "conversion", "pricing"],
5
- "skill": "content-marketing-strategy",
6
- "agent": "growth-strategist",
7
- "confidence": 0.95
3
+ "keywords": ["@architect", "system architect", "solution architect"],
4
+ "skill": "architecture-patterns",
5
+ "agent": "architect",
6
+ "confidence": 0.98
8
7
  },
9
8
  {
10
- "keywords": ["content", "write content", "blog", "article", "seo", "copy"],
11
- "skill": "copywriting",
12
- "agent": "content-creator",
13
- "confidence": 0.9
9
+ "keywords": ["@code-reviewer", "code review"],
10
+ "skill": "code-review",
11
+ "agent": "code-reviewer",
12
+ "confidence": 0.98
14
13
  },
15
14
  {
16
- "keywords": ["bug", "debug", "triage", "issue", "bug-tester", "tester"],
17
- "skill": "code-review",
18
- "agent": "bug-triage-specialist",
19
- "confidence": 0.9
15
+ "keywords": ["@security-auditor", "security audit", "vulnerability scan"],
16
+ "skill": "security-audit",
17
+ "agent": "security-auditor",
18
+ "confidence": 0.98
19
+ },
20
+ {
21
+ "keywords": ["@enforcer"],
22
+ "skill": "enforcer",
23
+ "agent": "enforcer",
24
+ "confidence": 0.98
20
25
  },
21
26
  {
22
- "keywords": ["test", "testing", "unit test", "e2e"],
27
+ "keywords": ["@orchestrator"],
28
+ "skill": "orchestrator",
29
+ "agent": "orchestrator",
30
+ "confidence": 0.98
31
+ },
32
+ {
33
+ "keywords": ["@refactorer", "refactor code"],
34
+ "skill": "refactoring-strategies",
35
+ "agent": "refactorer",
36
+ "confidence": 0.98
37
+ },
38
+ {
39
+ "keywords": ["@testing-lead", "test strategy"],
23
40
  "skill": "testing-strategy",
24
41
  "agent": "testing-lead",
25
- "confidence": 0.9
42
+ "confidence": 0.98
43
+ },
44
+ {
45
+ "keywords": ["@bug-triage-specialist", "debug", "triage bug"],
46
+ "skill": "code-review",
47
+ "agent": "bug-triage-specialist",
48
+ "confidence": 0.98
49
+ },
50
+ {
51
+ "keywords": ["@strategist", "planning", "roadmap"],
52
+ "skill": "strategist",
53
+ "agent": "strategist",
54
+ "confidence": 0.98
26
55
  },
27
56
  {
28
- "keywords": ["docs", "documentation", "document", "write docs"],
57
+ "keywords": ["@tech-writer", "documentation", "write docs"],
29
58
  "skill": "documentation-generation",
30
59
  "agent": "tech-writer",
31
- "confidence": 0.9
60
+ "confidence": 0.98
61
+ },
62
+ {
63
+ "keywords": ["@researcher", "find code"],
64
+ "skill": "git-workflow",
65
+ "agent": "researcher",
66
+ "confidence": 0.98
32
67
  },
33
- // ===== LANGUAGES & FRAMEWORKS =====
34
68
  {
35
- "keywords": ["rust", "rustlang", "cargo", "traits", "borrow checker"],
36
- "skill": "rust-patterns",
69
+ "keywords": ["@performance-engineer", "optimize performance", "speed up"],
70
+ "skill": "performance-optimization",
37
71
  "agent": "performance-engineer",
38
- "confidence": 0.99
72
+ "confidence": 0.98
39
73
  },
40
74
  {
41
- "keywords": ["typescript", "type error", "type safety"],
42
- "skill": "typescript-expert",
43
- "agent": "code-reviewer",
75
+ "keywords": ["@database-engineer", "database schema", "sql", "migration"],
76
+ "skill": "database-design",
77
+ "agent": "database-engineer",
78
+ "confidence": 0.98
79
+ },
80
+ {
81
+ "keywords": ["@devops-engineer", "deploy", "ci/cd", "docker"],
82
+ "skill": "devops-deployment",
83
+ "agent": "devops-engineer",
44
84
  "confidence": 0.98
45
85
  },
46
86
  {
47
- "keywords": ["python", "django", "flask", "pandas"],
48
- "skill": "python-patterns",
87
+ "keywords": ["@frontend-engineer", "frontend", "react", "vue"],
88
+ "skill": "frontend-development",
89
+ "agent": "frontend-engineer",
90
+ "confidence": 0.98
91
+ },
92
+ {
93
+ "keywords": ["@backend-engineer", "backend", "api", "server"],
94
+ "skill": "backend-development",
49
95
  "agent": "backend-engineer",
96
+ "confidence": 0.98
97
+ },
98
+ {
99
+ "keywords": ["resolve merge conflict", "merge conflict"],
100
+ "skill": "git-workflow",
101
+ "agent": "researcher",
50
102
  "confidence": 0.99
51
103
  },
52
- // ===== ADD YOUR CUSTOM MAPPINGS HERE =====
53
- // Example:
54
- // {
55
- // "keywords": ["custom keyword"],
56
- // "skill": "custom-skill",
57
- // "agent": "your-custom-agent",
58
- // "confidence": 0.95
59
- // }
104
+ {
105
+ "keywords": ["improve application performance", "speed up application"],
106
+ "skill": "performance-optimization",
107
+ "agent": "mobile-developer",
108
+ "confidence": 0.99
109
+ },
110
+ {
111
+ "keywords": ["design database schema", "query optimization"],
112
+ "skill": "database-design",
113
+ "agent": "database-engineer",
114
+ "confidence": 0.99
115
+ }
60
116
  ]
package/AGENTS.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # stringray - Project Agents Guide
2
2
 
3
- **Last Updated**: 2026-03-04
3
+ **Last Updated**: 2026-03-08
4
4
  **Generated by**: StringRay AI Librarian
5
5
 
6
6
  ---
7
7
 
8
+ <!-- AUTO-GENERATED START -->
9
+
8
10
  ## Languages
9
11
  - TypeScript
10
12
  - JavaScript
@@ -46,5 +48,8 @@ StringRay has **two distinct plugin systems** - do NOT confuse them:
46
48
  |---------------|----------|
47
49
  | Extend StringRay with custom agents | `src/plugins/` |
48
50
  | Inject codex into OpenCode | `.opencode/plugin/` |
51
+
52
+ <!-- AUTO-GENERATED END -->
49
53
  ---
50
- *This AGENTS.md is auto-maintained by StringRay AI Librarian*
54
+
55
+ *This AGENTS.md is auto-maintained by StringRay AI Librarian*
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Anonymization Engine for StringRay Central Analytics
3
+ *
4
+ * Removes personally identifiable information and project-specific data
5
+ * while preserving learning value through pattern extraction.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-03-06
9
+ */
10
+ export interface RawReflectionData {
11
+ projectName: string;
12
+ repositoryUrl: string;
13
+ reflection: string;
14
+ filePath: string;
15
+ author: string;
16
+ authorEmail: string;
17
+ code: string;
18
+ timestamp: Date;
19
+ ipAddress?: string;
20
+ apiKey?: string;
21
+ }
22
+ export interface AnonymizedReflection {
23
+ submissionId: string;
24
+ metadata: {
25
+ submissionId: string;
26
+ frameworkVersion: string;
27
+ timestampRelative: number;
28
+ region: string | undefined;
29
+ };
30
+ content: {
31
+ taskType: string;
32
+ complexity: number;
33
+ routedAgent: string;
34
+ outcome: "success" | "failure";
35
+ duration: number;
36
+ confidence: number;
37
+ emotionalContext: {
38
+ struggleLevel: "none" | "low" | "medium" | "high" | "extreme";
39
+ frustrationIndicators: number;
40
+ hasCounterfactualAnalysis: boolean;
41
+ depthScore: number;
42
+ };
43
+ patterns: {
44
+ keywordsMatched: string[];
45
+ kernelPattern?: string | undefined;
46
+ successRate: number;
47
+ };
48
+ reflectionStructure: {
49
+ hasInnerDialogue: boolean;
50
+ hasCounterfactual: boolean;
51
+ hasMasterWisdom: boolean;
52
+ emotionalHonestyScore: number;
53
+ lengthCategory: "short" | "medium" | "long";
54
+ };
55
+ };
56
+ }
57
+ export declare class AnonymizationEngine {
58
+ private frameworkVersion;
59
+ /**
60
+ * Anonymize raw reflection data
61
+ */
62
+ anonymize(rawData: RawReflectionData): AnonymizedReflection;
63
+ /**
64
+ * Extract learning signals from raw data
65
+ */
66
+ private extractLearningSignals;
67
+ /**
68
+ * Detect task type from reflection content
69
+ */
70
+ private detectTaskType;
71
+ /**
72
+ * Estimate complexity from reflection content
73
+ */
74
+ private estimateComplexity;
75
+ /**
76
+ * Detect agent from reflection content using keyword matching
77
+ */
78
+ private extractAgentName;
79
+ /**
80
+ * Detect outcome from reflection
81
+ */
82
+ private detectOutcome;
83
+ /**
84
+ * Extract emotional context indicators
85
+ */
86
+ private extractEmotionalContext;
87
+ /**
88
+ * Extract patterns from reflection
89
+ */
90
+ private extractPatterns;
91
+ /**
92
+ * Analyze reflection structure
93
+ */
94
+ private analyzeReflectionStructure;
95
+ /**
96
+ * Standardize agent names
97
+ */
98
+ private standardizeAgentName;
99
+ /**
100
+ * Anonymize timestamp to relative time
101
+ */
102
+ private anonymizeTimestamp;
103
+ /**
104
+ * Anonymize region from IP address
105
+ */
106
+ private anonymizeRegion;
107
+ }
108
+ //# sourceMappingURL=anonymization-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymization-engine.d.ts","sourceRoot":"","sources":["../../src/analytics/anonymization-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE;YAChB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;YAC9D,qBAAqB,EAAE,MAAM,CAAC;YAC9B,yBAAyB,EAAE,OAAO,CAAC;YACnC,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,QAAQ,EAAE;YACR,eAAe,EAAE,MAAM,EAAE,CAAC;YAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YACnC,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,mBAAmB,EAAE;YACnB,gBAAgB,EAAE,OAAO,CAAC;YAC1B,iBAAiB,EAAE,OAAO,CAAC;YAC3B,eAAe,EAAE,OAAO,CAAC;YACzB,qBAAqB,EAAE,MAAM,CAAC;YAC9B,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;SAC7C,CAAC;KACH,CAAC;CACH;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAW;IAEnC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB;IA+B3D;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyC9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwDxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA+BlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}