strray-ai 1.14.0 → 1.14.2

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 (327) hide show
  1. package/.opencode/AGENTS-consumer.md +1 -1
  2. package/.opencode/codex.codex +1 -1
  3. package/.opencode/enforcer-config.json +2 -2
  4. package/.opencode/hooks/post-commit +59 -3
  5. package/.opencode/hooks/post-commit.backup +155 -112
  6. package/.opencode/hooks/post-push +59 -3
  7. package/.opencode/hooks/post-push.backup +47 -64
  8. package/.opencode/package.json +1 -1
  9. package/.opencode/plugins/strray-codex-injection.js +37 -127
  10. package/.opencode/strray/agents_template.md +2 -2
  11. package/.opencode/strray/codex.json +1 -1
  12. package/.opencode/strray/config.json +1 -1
  13. package/.opencode/strray/features.json +1 -1
  14. package/.opencode/strray/integrations.json +3 -3
  15. package/AGENTS-consumer.md +669 -0
  16. package/AGENTS.md +16 -17
  17. package/README.md +104 -13
  18. package/dist/agents/researcher.d.ts.map +1 -1
  19. package/dist/agents/researcher.js.map +1 -1
  20. package/dist/analytics/emerging-pattern-detector.d.ts +1 -1
  21. package/dist/analytics/emerging-pattern-detector.d.ts.map +1 -1
  22. package/dist/analytics/prompt-pattern-analyzer.js +1 -1
  23. package/dist/analytics/prompt-pattern-analyzer.js.map +1 -1
  24. package/dist/analytics/routing-performance-analyzer.js +1 -1
  25. package/dist/analytics/routing-performance-analyzer.js.map +1 -1
  26. package/dist/analytics/routing-refiner.js +1 -1
  27. package/dist/cli/commands/agent-skills.d.ts +10 -0
  28. package/dist/cli/commands/agent-skills.d.ts.map +1 -0
  29. package/dist/cli/commands/agent-skills.js +55 -0
  30. package/dist/cli/commands/agent-skills.js.map +1 -0
  31. package/dist/cli/commands/antigravity-status.d.ts +10 -0
  32. package/dist/cli/commands/antigravity-status.d.ts.map +1 -0
  33. package/dist/cli/commands/antigravity-status.js +102 -0
  34. package/dist/cli/commands/antigravity-status.js.map +1 -0
  35. package/dist/cli/commands/credible-init.d.ts +12 -0
  36. package/dist/cli/commands/credible-init.d.ts.map +1 -0
  37. package/dist/cli/commands/credible-init.js +83 -0
  38. package/dist/cli/commands/credible-init.js.map +1 -0
  39. package/dist/cli/commands/publish-agent.d.ts +16 -0
  40. package/dist/cli/commands/publish-agent.d.ts.map +1 -0
  41. package/dist/cli/commands/publish-agent.js +184 -0
  42. package/dist/cli/commands/publish-agent.js.map +1 -0
  43. package/dist/cli/commands/skill-install.d.ts +6 -0
  44. package/dist/cli/commands/skill-install.d.ts.map +1 -0
  45. package/dist/cli/commands/skill-install.js +305 -0
  46. package/dist/cli/commands/skill-install.js.map +1 -0
  47. package/dist/cli/commands/skill-list.d.ts +11 -0
  48. package/dist/cli/commands/skill-list.d.ts.map +1 -0
  49. package/dist/cli/commands/skill-list.js +54 -0
  50. package/dist/cli/commands/skill-list.js.map +1 -0
  51. package/dist/cli/commands/status.d.ts +42 -0
  52. package/dist/cli/commands/status.d.ts.map +1 -0
  53. package/dist/cli/commands/status.js +192 -0
  54. package/dist/cli/commands/status.js.map +1 -0
  55. package/dist/cli/index.js +55 -64
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/core/boot-orchestrator.d.ts +2 -0
  58. package/dist/core/boot-orchestrator.d.ts.map +1 -1
  59. package/dist/core/boot-orchestrator.js +10 -6
  60. package/dist/core/boot-orchestrator.js.map +1 -1
  61. package/dist/core/features-config.js +1 -1
  62. package/dist/delegation/agent-delegator.d.ts +0 -1
  63. package/dist/delegation/agent-delegator.d.ts.map +1 -1
  64. package/dist/delegation/agent-delegator.js +5 -9
  65. package/dist/delegation/agent-delegator.js.map +1 -1
  66. package/dist/delegation/analytics/outcome-tracker.d.ts.map +1 -1
  67. package/dist/delegation/analytics/outcome-tracker.js +1 -2
  68. package/dist/delegation/analytics/outcome-tracker.js.map +1 -1
  69. package/dist/delegation/analytics/routing-analytics.d.ts.map +1 -1
  70. package/dist/delegation/analytics/routing-analytics.js +1 -2
  71. package/dist/delegation/analytics/routing-analytics.js.map +1 -1
  72. package/dist/delegation/index.d.ts +0 -1
  73. package/dist/delegation/index.d.ts.map +1 -1
  74. package/dist/delegation/index.js +0 -2
  75. package/dist/delegation/index.js.map +1 -1
  76. package/dist/enforcement/enforcer-tools.d.ts +0 -4
  77. package/dist/enforcement/enforcer-tools.d.ts.map +1 -1
  78. package/dist/enforcement/enforcer-tools.js +4 -15
  79. package/dist/enforcement/enforcer-tools.js.map +1 -1
  80. package/dist/mcps/architect-tools.server.js +1 -1
  81. package/dist/mcps/auto-format.server.js +1 -1
  82. package/dist/mcps/boot-orchestrator.server.js +1 -1
  83. package/dist/mcps/enforcer-tools.server.js +1 -1
  84. package/dist/mcps/estimation.server.js +1 -1
  85. package/dist/mcps/framework-compliance-audit.server.js +1 -1
  86. package/dist/mcps/framework-help.server.js +1 -1
  87. package/dist/mcps/knowledge-skills/api-design.server.js +1 -1
  88. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +1 -1
  89. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
  90. package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
  91. package/dist/mcps/knowledge-skills/code-review.server.js +1 -1
  92. package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
  93. package/dist/mcps/knowledge-skills/database-design.server.js +1 -1
  94. package/dist/mcps/knowledge-skills/devops-deployment.server.js +1 -1
  95. package/dist/mcps/knowledge-skills/git-workflow.server.js +1 -1
  96. package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
  97. package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
  98. package/dist/mcps/knowledge-skills/mobile-development.server.js +1 -1
  99. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
  100. package/dist/mcps/knowledge-skills/performance-optimization.server.js +1 -1
  101. package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
  102. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +1 -1
  103. package/dist/mcps/knowledge-skills/security-audit.server.js +1 -1
  104. package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
  105. package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
  106. package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
  107. package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
  108. package/dist/mcps/knowledge-skills/tech-writer.server.js +2 -2
  109. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +1 -1
  110. package/dist/mcps/knowledge-skills/testing-strategy.server.js +1 -1
  111. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1 -1
  112. package/dist/mcps/lint.server.js +1 -1
  113. package/dist/mcps/model-health-check.server.js +1 -1
  114. package/dist/mcps/performance-analysis.server.js +1 -1
  115. package/dist/mcps/processor-pipeline.server.js +1 -1
  116. package/dist/mcps/researcher.server.js +1 -1
  117. package/dist/mcps/security-scan.server.js +1 -1
  118. package/dist/mcps/state-manager.server.js +1 -1
  119. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  120. package/dist/plugin/strray-codex-injection.d.ts.map +1 -1
  121. package/dist/plugin/strray-codex-injection.js +37 -127
  122. package/dist/plugin/strray-codex-injection.js.map +1 -1
  123. package/dist/postprocessor/PostProcessor.d.ts.map +1 -1
  124. package/dist/postprocessor/PostProcessor.js +0 -1
  125. package/dist/postprocessor/PostProcessor.js.map +1 -1
  126. package/dist/processors/implementations/inference-improvement-processor.js +1 -1
  127. package/dist/services/inference-tuner.d.ts +0 -3
  128. package/dist/services/inference-tuner.d.ts.map +1 -1
  129. package/dist/services/inference-tuner.js +2 -32
  130. package/dist/services/inference-tuner.js.map +1 -1
  131. package/dist/skills/systematic-debugging/condition-based-waiting-example.d.ts +52 -0
  132. package/dist/skills/systematic-debugging/condition-based-waiting-example.d.ts.map +1 -0
  133. package/dist/skills/systematic-debugging/condition-based-waiting-example.js +128 -0
  134. package/dist/skills/systematic-debugging/condition-based-waiting-example.js.map +1 -0
  135. package/package.json +6 -10
  136. package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
  137. package/scripts/mjs/validate-postinstall-config.mjs +76 -0
  138. package/scripts/node/ci-cd-auto-fix.cjs +263 -0
  139. package/scripts/node/enforce-version-compliance.ts +4 -3
  140. package/scripts/node/install.cjs +595 -0
  141. package/scripts/node/postinstall.cjs +37 -0
  142. package/scripts/node/test-install.cjs +79 -0
  143. package/scripts/node/universal-version-manager.js +4 -4
  144. package/{.opencode → src}/skills/api-design/SKILL.md +6 -0
  145. package/{.opencode → src}/skills/architect-tools/SKILL.md +6 -0
  146. package/{.opencode → src}/skills/architecture-patterns/SKILL.md +6 -0
  147. package/{.opencode → src}/skills/auto-format/SKILL.md +6 -0
  148. package/{.opencode → src}/skills/boot-orchestrator/SKILL.md +6 -0
  149. package/{.opencode → src}/skills/bug-triage/SKILL.md +6 -0
  150. package/{.opencode → src}/skills/code-analyzer/SKILL.md +6 -0
  151. package/{.opencode → src}/skills/code-review/SKILL.md +17 -0
  152. package/{.opencode → src}/skills/enforcer/SKILL.md +6 -0
  153. package/{.opencode → src}/skills/framework-compliance-audit/SKILL.md +6 -0
  154. package/{.opencode → src}/skills/git-workflow/SKILL.md +6 -0
  155. package/{.opencode → src}/skills/inference-improve/SKILL.md +6 -0
  156. package/{.opencode → src}/skills/lint/SKILL.md +6 -0
  157. package/{.opencode → src}/skills/log-monitor/SKILL.md +6 -0
  158. package/{.opencode → src}/skills/model-health-check/SKILL.md +6 -0
  159. package/{.opencode → src}/skills/multimodal-looker/SKILL.md +6 -0
  160. package/{.opencode → src}/skills/orchestrator/SKILL.md +6 -0
  161. package/{.opencode → src}/skills/performance-analysis/SKILL.md +6 -0
  162. package/{.opencode → src}/skills/performance-optimization/SKILL.md +6 -0
  163. package/{.opencode → src}/skills/processor-pipeline/SKILL.md +6 -0
  164. package/{.opencode → src}/skills/project-analysis/SKILL.md +6 -0
  165. package/{.opencode → src}/skills/refactoring-strategies/SKILL.md +6 -0
  166. package/src/skills/registry.json +66 -0
  167. package/{.opencode → src}/skills/researcher/SKILL.md +6 -0
  168. package/{.opencode → src}/skills/security-audit/SKILL.md +16 -0
  169. package/{.opencode → src}/skills/security-scan/SKILL.md +6 -0
  170. package/{.opencode → src}/skills/session-management/SKILL.md +6 -0
  171. package/{.opencode → src}/skills/state-manager/SKILL.md +6 -0
  172. package/{.opencode → src}/skills/testing-best-practices/SKILL.md +6 -0
  173. package/{.opencode → src}/skills/testing-strategy/SKILL.md +6 -0
  174. package/{.opencode → src}/skills/ui-ux-design/SKILL.md +6 -0
  175. package/.opencode/integrations/api-security-best-practices/SKILL.md +0 -919
  176. package/.opencode/integrations/aws-serverless/SKILL.md +0 -337
  177. package/.opencode/integrations/brainstorming/SKILL.md +0 -241
  178. package/.opencode/integrations/claude-seo/README.md +0 -77
  179. package/.opencode/integrations/claude-seo/routing.json +0 -103
  180. package/.opencode/integrations/claude-seo/seo-audit/SKILL.md +0 -127
  181. package/.opencode/integrations/claude-seo/seo-competitor-pages/SKILL.md +0 -220
  182. package/.opencode/integrations/claude-seo/seo-content/SKILL.md +0 -177
  183. package/.opencode/integrations/claude-seo/seo-geo/SKILL.md +0 -251
  184. package/.opencode/integrations/claude-seo/seo-hreflang/SKILL.md +0 -200
  185. package/.opencode/integrations/claude-seo/seo-images/SKILL.md +0 -184
  186. package/.opencode/integrations/claude-seo/seo-page/SKILL.md +0 -94
  187. package/.opencode/integrations/claude-seo/seo-plan/SKILL.md +0 -126
  188. package/.opencode/integrations/claude-seo/seo-programmatic/SKILL.md +0 -178
  189. package/.opencode/integrations/claude-seo/seo-schema/SKILL.md +0 -167
  190. package/.opencode/integrations/claude-seo/seo-sitemap/SKILL.md +0 -120
  191. package/.opencode/integrations/claude-seo/seo-technical/SKILL.md +0 -168
  192. package/.opencode/integrations/copywriting/SKILL.md +0 -259
  193. package/.opencode/integrations/docker-expert/SKILL.md +0 -422
  194. package/.opencode/integrations/pricing-strategy/SKILL.md +0 -371
  195. package/.opencode/integrations/prompt-engineering/SKILL.md +0 -186
  196. package/.opencode/integrations/python-patterns/SKILL.md +0 -456
  197. package/.opencode/integrations/rag-engineer/SKILL.md +0 -104
  198. package/.opencode/integrations/react-patterns/SKILL.md +0 -212
  199. package/.opencode/integrations/seo-fundamentals/SKILL.md +0 -184
  200. package/.opencode/integrations/typescript-expert/SKILL.md +0 -435
  201. package/.opencode/integrations/vercel-deployment/SKILL.md +0 -89
  202. package/.opencode/integrations/vulnerability-scanner/SKILL.md +0 -290
  203. package/.opencode/strray/routing-mappings.json +0 -752
  204. package/LICENSE.antigravity +0 -42
  205. package/LICENSE.claude-seo +0 -39
  206. package/dist/delegation/config/default-mappings/analysis-mappings.d.ts +0 -9
  207. package/dist/delegation/config/default-mappings/analysis-mappings.d.ts.map +0 -1
  208. package/dist/delegation/config/default-mappings/analysis-mappings.js +0 -85
  209. package/dist/delegation/config/default-mappings/analysis-mappings.js.map +0 -1
  210. package/dist/delegation/config/default-mappings/architecture-mappings.d.ts +0 -9
  211. package/dist/delegation/config/default-mappings/architecture-mappings.d.ts.map +0 -1
  212. package/dist/delegation/config/default-mappings/architecture-mappings.js +0 -88
  213. package/dist/delegation/config/default-mappings/architecture-mappings.js.map +0 -1
  214. package/dist/delegation/config/default-mappings/content-mappings.d.ts +0 -9
  215. package/dist/delegation/config/default-mappings/content-mappings.d.ts.map +0 -1
  216. package/dist/delegation/config/default-mappings/content-mappings.js +0 -120
  217. package/dist/delegation/config/default-mappings/content-mappings.js.map +0 -1
  218. package/dist/delegation/config/default-mappings/database-mappings.d.ts +0 -9
  219. package/dist/delegation/config/default-mappings/database-mappings.d.ts.map +0 -1
  220. package/dist/delegation/config/default-mappings/database-mappings.js +0 -33
  221. package/dist/delegation/config/default-mappings/database-mappings.js.map +0 -1
  222. package/dist/delegation/config/default-mappings/development-mappings.d.ts +0 -9
  223. package/dist/delegation/config/default-mappings/development-mappings.d.ts.map +0 -1
  224. package/dist/delegation/config/default-mappings/development-mappings.js +0 -240
  225. package/dist/delegation/config/default-mappings/development-mappings.js.map +0 -1
  226. package/dist/delegation/config/default-mappings/devops-mappings.d.ts +0 -9
  227. package/dist/delegation/config/default-mappings/devops-mappings.d.ts.map +0 -1
  228. package/dist/delegation/config/default-mappings/devops-mappings.js +0 -83
  229. package/dist/delegation/config/default-mappings/devops-mappings.js.map +0 -1
  230. package/dist/delegation/config/default-mappings/documentation-mappings.d.ts +0 -9
  231. package/dist/delegation/config/default-mappings/documentation-mappings.d.ts.map +0 -1
  232. package/dist/delegation/config/default-mappings/documentation-mappings.js +0 -48
  233. package/dist/delegation/config/default-mappings/documentation-mappings.js.map +0 -1
  234. package/dist/delegation/config/default-mappings/index.d.ts +0 -26
  235. package/dist/delegation/config/default-mappings/index.d.ts.map +0 -1
  236. package/dist/delegation/config/default-mappings/index.js +0 -38
  237. package/dist/delegation/config/default-mappings/index.js.map +0 -1
  238. package/dist/delegation/config/default-mappings/performance-mappings.d.ts +0 -9
  239. package/dist/delegation/config/default-mappings/performance-mappings.d.ts.map +0 -1
  240. package/dist/delegation/config/default-mappings/performance-mappings.js +0 -68
  241. package/dist/delegation/config/default-mappings/performance-mappings.js.map +0 -1
  242. package/dist/delegation/config/default-mappings/security-mappings.d.ts +0 -9
  243. package/dist/delegation/config/default-mappings/security-mappings.d.ts.map +0 -1
  244. package/dist/delegation/config/default-mappings/security-mappings.js +0 -59
  245. package/dist/delegation/config/default-mappings/security-mappings.js.map +0 -1
  246. package/dist/delegation/config/default-mappings/special-mappings.d.ts +0 -9
  247. package/dist/delegation/config/default-mappings/special-mappings.d.ts.map +0 -1
  248. package/dist/delegation/config/default-mappings/special-mappings.js +0 -36
  249. package/dist/delegation/config/default-mappings/special-mappings.js.map +0 -1
  250. package/dist/delegation/config/default-mappings/testing-mappings.d.ts +0 -9
  251. package/dist/delegation/config/default-mappings/testing-mappings.d.ts.map +0 -1
  252. package/dist/delegation/config/default-mappings/testing-mappings.js +0 -88
  253. package/dist/delegation/config/default-mappings/testing-mappings.js.map +0 -1
  254. package/dist/delegation/config/default-mappings/ui-ux-mappings.d.ts +0 -9
  255. package/dist/delegation/config/default-mappings/ui-ux-mappings.d.ts.map +0 -1
  256. package/dist/delegation/config/default-mappings/ui-ux-mappings.js +0 -72
  257. package/dist/delegation/config/default-mappings/ui-ux-mappings.js.map +0 -1
  258. package/dist/delegation/config/index.d.ts +0 -10
  259. package/dist/delegation/config/index.d.ts.map +0 -1
  260. package/dist/delegation/config/index.js +0 -10
  261. package/dist/delegation/config/index.js.map +0 -1
  262. package/dist/delegation/config/routing-config.d.ts +0 -17
  263. package/dist/delegation/config/routing-config.d.ts.map +0 -1
  264. package/dist/delegation/config/routing-config.js +0 -22
  265. package/dist/delegation/config/routing-config.js.map +0 -1
  266. package/dist/delegation/config/routing-mappings.d.ts +0 -21
  267. package/dist/delegation/config/routing-mappings.d.ts.map +0 -1
  268. package/dist/delegation/config/routing-mappings.js +0 -106
  269. package/dist/delegation/config/routing-mappings.js.map +0 -1
  270. package/dist/delegation/routing/complexity-router.d.ts +0 -87
  271. package/dist/delegation/routing/complexity-router.d.ts.map +0 -1
  272. package/dist/delegation/routing/complexity-router.js +0 -140
  273. package/dist/delegation/routing/complexity-router.js.map +0 -1
  274. package/dist/delegation/routing/history-matcher.d.ts +0 -100
  275. package/dist/delegation/routing/history-matcher.d.ts.map +0 -1
  276. package/dist/delegation/routing/history-matcher.js +0 -194
  277. package/dist/delegation/routing/history-matcher.js.map +0 -1
  278. package/dist/delegation/routing/index.d.ts +0 -23
  279. package/dist/delegation/routing/index.d.ts.map +0 -1
  280. package/dist/delegation/routing/index.js +0 -24
  281. package/dist/delegation/routing/index.js.map +0 -1
  282. package/dist/delegation/routing/interfaces.d.ts +0 -99
  283. package/dist/delegation/routing/interfaces.d.ts.map +0 -1
  284. package/dist/delegation/routing/interfaces.js +0 -8
  285. package/dist/delegation/routing/interfaces.js.map +0 -1
  286. package/dist/delegation/routing/keyword-matcher.d.ts +0 -54
  287. package/dist/delegation/routing/keyword-matcher.d.ts.map +0 -1
  288. package/dist/delegation/routing/keyword-matcher.js +0 -142
  289. package/dist/delegation/routing/keyword-matcher.js.map +0 -1
  290. package/dist/delegation/routing/router-core.d.ts +0 -136
  291. package/dist/delegation/routing/router-core.d.ts.map +0 -1
  292. package/dist/delegation/routing/router-core.js +0 -443
  293. package/dist/delegation/routing/router-core.js.map +0 -1
  294. package/dist/delegation/task-skill-router.d.ts +0 -162
  295. package/dist/delegation/task-skill-router.d.ts.map +0 -1
  296. package/dist/delegation/task-skill-router.js +0 -301
  297. package/dist/delegation/task-skill-router.js.map +0 -1
  298. package/dist/plugins/marketplace/marketplace-service.d.ts +0 -108
  299. package/dist/plugins/marketplace/marketplace-service.d.ts.map +0 -1
  300. package/dist/plugins/marketplace/marketplace-service.js +0 -620
  301. package/dist/plugins/marketplace/marketplace-service.js.map +0 -1
  302. package/dist/plugins/marketplace/marketplace-types.d.ts +0 -468
  303. package/dist/plugins/marketplace/marketplace-types.d.ts.map +0 -1
  304. package/dist/plugins/marketplace/marketplace-types.js +0 -11
  305. package/dist/plugins/marketplace/marketplace-types.js.map +0 -1
  306. package/dist/plugins/plugin-system.d.ts +0 -152
  307. package/dist/plugins/plugin-system.d.ts.map +0 -1
  308. package/dist/plugins/plugin-system.js +0 -419
  309. package/dist/plugins/plugin-system.js.map +0 -1
  310. package/dist/plugins/stringray-codex-injection.d.ts +0 -21
  311. package/dist/plugins/stringray-codex-injection.d.ts.map +0 -1
  312. package/dist/plugins/stringray-codex-injection.js +0 -169
  313. package/dist/plugins/stringray-codex-injection.js.map +0 -1
  314. package/dist/scripts/analytics/daily-routing-analysis.d.ts +0 -18
  315. package/dist/scripts/analytics/daily-routing-analysis.d.ts.map +0 -1
  316. package/dist/scripts/analytics/daily-routing-analysis.js +0 -268
  317. package/dist/scripts/analytics/daily-routing-analysis.js.map +0 -1
  318. package/dist/scripts/analytics/index.d.ts +0 -15
  319. package/dist/scripts/analytics/index.d.ts.map +0 -1
  320. package/dist/scripts/analytics/index.js +0 -17
  321. package/dist/scripts/analytics/index.js.map +0 -1
  322. package/dist/scripts/test-p9.d.ts +0 -15
  323. package/dist/scripts/test-p9.d.ts.map +0 -1
  324. package/dist/scripts/test-p9.js +0 -220
  325. package/dist/scripts/test-p9.js.map +0 -1
  326. package/scripts/integrations/install-antigravity-skills.js.mjs +0 -195
  327. package/scripts/integrations/install-claude-seo.js +0 -561
@@ -651,4 +651,4 @@ npx strray-ai --version
651
651
  - [Troubleshooting](https://github.com/htafolla/stringray/blob/master/docs/TROUBLESHOOTING.md)
652
652
 
653
653
  ---
654
- **Version**: 1.14.0 | [GitHub](https://github.com/htafolla/stringray)
654
+ **Version**: 1.14.1 | [GitHub](https://github.com/htafolla/stringray)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.14.0",
2
+ "version": "1.14.1",
3
3
  "terms": [
4
4
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60
5
5
  ],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "framework": "StringRay 1.0.0",
3
- "version": "1.14.0",
3
+ "version": "1.14.1",
4
4
  "description": "Codex-compliant framework configuration for Credible UI project",
5
5
  "thresholds": {
6
6
  "bundleSize": {
@@ -220,7 +220,7 @@
220
220
  }
221
221
  },
222
222
  "codex": {
223
- "version": "1.14.0",
223
+ "version": "1.14.1",
224
224
  "terms": [
225
225
  1,
226
226
  2,
@@ -97,7 +97,7 @@ fi
97
97
 
98
98
  await frameworkLogger.log('-git-hook-trigger', '-post-commit-validation-passed-in-result-duration-', 'success', { message: '✅ Post-commit: Validation passed in ' + result.duration + 'ms' });
99
99
  } catch (error) {
100
- console.error(' Post-commit validation failed:', error instanceof Error ? error.message : String(error));
100
+ await frameworkLogger.log('git-hook-trigger', 'post-commit-validation-failed', 'error', { error: error instanceof Error ? error.message : String(error) });
101
101
  process.exit(1);
102
102
  }
103
103
  })();
@@ -115,16 +115,72 @@ fi
115
115
  try {
116
116
  // Use dynamic import that works in both dev and consumer
117
117
  const basePath = process.env.STRRAY_BASE_PATH || '.';
118
+ // First archive logs (compress and rotate) before cleanup
119
+ const { archiveLogFiles } = await import(basePath + '/dist/postprocessor/triggers/GitHookTrigger.js');
120
+ const archiveResult = await archiveLogFiles({
121
+ archiveDirectory: 'logs/framework',
122
+ maxFileSizeMB: 10, // Archive if > 10MB
123
+ rotationIntervalHours: 24, // Archive if > 24 hours old
124
+ compressionEnabled: true,
125
+ maxAgeHours: 168, // Keep archives for 7 days
126
+ directories: ['logs/framework'],
127
+ excludePatterns: []
128
+ });
129
+ if (archiveResult.archived > 0) {
130
+ await frameworkLogger.log('-git-hook-trigger', '-archived-log-files-', 'info', { message: `📦 Archived ${archiveResult.archived} log files` });
131
+ }
132
+
133
+ // Then cleanup old files
118
134
  const { cleanupLogFiles } = await import(basePath + '/dist/postprocessor/triggers/GitHookTrigger.js');
119
135
  const result = await cleanupLogFiles({
120
136
  maxAgeHours: 24,
121
- excludePatterns: ['logs/framework/activity.log', 'logs/agents/refactoring-log.md', 'current-session.log'],
137
+ excludePatterns: [
138
+ // Core inference/logging - NEVER DELETE
139
+ 'activity.log',
140
+ 'framework-activity-',
141
+ 'strray-plugin-',
142
+
143
+ // Analysis & reflections - Contains inference data
144
+ 'kernel-',
145
+ 'reflection-',
146
+
147
+ // Documentation & plans - Important artifacts
148
+ '.md',
149
+ 'AUTOMATED_',
150
+ 'REFACTORING-',
151
+ 'release-',
152
+
153
+ // Subdirectories with important data (but test-activity should be cleaned)
154
+ 'deployment/',
155
+ 'monitoring/',
156
+ 'reports/',
157
+ 'reflections/',
158
+
159
+ // Init logs can be cleaned but keep recent
160
+ 'strray-init-2026-01-2', // Keep Jan 20s
161
+ 'strray-init-2026-01-3', // Keep Jan 30s
162
+
163
+ // Other important files
164
+ 'current-session.log',
165
+ 'full-test-run.log',
166
+ 'kernel-codex',
167
+ 'kernel-methodology',
168
+ 'kernel-status',
169
+ 'kernel-update',
170
+ 'kernel-v2',
171
+ ],
122
172
  directories: ['logs/'],
123
173
  enabled: true
124
174
  });
125
175
  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` });
176
+ await frameworkLogger.log('-git-hook-trigger', '-cleaned-result-cleaned-old-log-files-', 'info', { message: '🧹 Cleaned ' + result.cleaned + ' old log files' });
127
177
  }
178
+ if (result.errors.length > 0) {
179
+ await frameworkLogger.log('git-hook-trigger', 'log-cleanup-errors', 'error', { errors: result.errors });
180
+ }
181
+ } catch (error) {
182
+ await frameworkLogger.log('git-hook-trigger', 'log-cleanup-failed', 'error', { error: error instanceof Error ? error.message : String(error) });
183
+ }
128
184
  if (result.errors.length > 0) {
129
185
  console.error('Log cleanup errors:', result.errors);
130
186
  }
@@ -1,129 +1,172 @@
1
1
  #!/bin/bash
2
- # StrRay Post-Processor post-commit Hook
3
- # Automatically triggers post-processor after commit
4
- # Suggests reflection writing for significant changes
5
-
6
- set -e
2
+ # StringRay Post-Processor post-commit Hook
3
+ # Automatically triggers post-processor after post-commit
7
4
 
5
+ # Get hook type from script name
8
6
  HOOK_NAME=$(basename "$0")
9
- COMMIT_SHA=$(git rev-parse HEAD)
10
- BRANCH=$(git rev-parse --abbrev-ref HEAD)
11
- AUTHOR=$(git log -1 --pretty=format:'%an <%ae>')
7
+ COMMIT_SHA=""
8
+
9
+ if [ "$HOOK_NAME" = "post-commit" ]; then
10
+ # Light monitoring for local commits - just basic validation
11
+ COMMIT_SHA=$(git rev-parse HEAD)
12
+ MONITORING_LEVEL="basic"
13
+ elif [ "$HOOK_NAME" = "post-push" ]; then
14
+ # Full monitoring for pushes - comprehensive validation
15
+ # For push hooks, we need to parse the pushed refs from stdin
16
+ while read local_ref local_sha remote_ref remote_sha; do
17
+ if [ "$local_sha" != "0000000000000000000000000000000000000000" ]; then
18
+ COMMIT_SHA=$local_sha
19
+ break
20
+ fi
21
+ done
22
+ MONITORING_LEVEL="full"
23
+ else
24
+ COMMIT_SHA=$(git rev-parse HEAD)
25
+ MONITORING_LEVEL="basic"
26
+ fi
12
27
 
13
28
  if [ -z "$COMMIT_SHA" ]; then
29
+ echo "Warning: Could not determine commit SHA for post-processor"
14
30
  exit 0
15
31
  fi
16
32
 
17
- # Get changed files
18
- FILES=$(git diff --name-only HEAD~1 2>/dev/null || git diff --name-only --cached)
19
-
20
- # Get commit message for reflection decision
21
- COMMIT_MSG=$(git log -1 --pretty=format:'%s')
22
-
23
- # Check if this commit warrants reflection
24
- # (debugging, bug fixes, path issues, significant changes)
25
- REFLECTION_TRIGGERS="debug|fix|bug|path|mcp|consumer|installation|reflection"
26
- if echo "$COMMIT_MSG" | grep -qiE "$REFLECTION_TRIGGERS"; then
27
- echo "📝 Reflection Suggestion: This commit appears to involve debugging, fixes, or significant changes."
28
- echo " Consider writing a reflection using the template at docs/reflections/TEMPLATE.md"
29
- echo ""
30
- fi
31
-
32
- # Check for new reflection files and validate them
33
- NEW_REFLECTIONS=$(git diff --name-only HEAD~1 2>/dev/null | grep "^docs/reflections/.*\.md$" | grep -v "TEMPLATE.md" || true)
34
- if [ -n "$NEW_REFLECTIONS" ]; then
35
- echo "🔍 Validating new reflection files..."
36
- for ref in $NEW_REFLECTIONS; do
37
- if [ -f "$ref" ]; then
38
- if bash scripts/node/reflection-check.sh "$ref" 2>/dev/null; then
39
- echo " ✅ $ref passes template validation"
40
- else
41
- echo " ❌ $ref FAILED template validation"
42
- echo " 📖 Read the template: docs/reflections/TEMPLATE.md"
43
- echo " ⚠️ Please fix the reflection to match the template before committing"
44
- fi
45
- fi
46
- done
47
- echo ""
48
- fi
33
+ # Get repository info
34
+ REPO="strray-framework/stringray" # Placeholder for now
35
+ BRANCH=$(git rev-parse --abbrev-ref HEAD)
36
+ AUTHOR=$(git log -1 --pretty=format:'%an <%ae>')
49
37
 
50
- # Check if AGENTS.md was modified and validate it
51
- AGENTS_MODIFIED=$(git diff --name-only HEAD~1 2>/dev/null | grep "^AGENTS.md$" || true)
52
- if [ -n "$AGENTS_MODIFIED" ]; then
53
- echo "🔍 Validating AGENTS.md..."
54
- if [ -f "AGENTS.md" ]; then
55
- # Check required sections
56
- ERRORS=0
57
- for section in "## Available Agents" "## Complexity Routing" "## CLI Commands" "## Codex"; do
58
- if grep -q "$section" AGENTS.md; then
59
- echo " ✅ Contains: $section"
60
- else
61
- echo " ❌ Missing: $section"
62
- ERRORS=$((ERRORS + 1))
63
- fi
64
- done
65
-
66
- # Check agent count
67
- AGENT_COUNT=$(grep -o '@[a-z-]*' AGENTS.md | wc -l)
68
- if [ "$AGENT_COUNT" -ge 15 ]; then
69
- echo " ✅ Agent count: $AGENT_COUNT (recommended: 20+)"
70
- else
71
- echo " ⚠️ Agent count: $AGENT_COUNT (recommended: 20+)"
72
- fi
73
-
74
- if [ "$ERRORS" -gt 0 ]; then
75
- echo " ⚠️ AGENTS.md has $ERRORS missing required sections"
76
- echo " 📖 See AGENTS.md in root for current format"
77
- else
78
- echo " ✅ AGENTS.md validation passed"
79
- fi
80
- else
81
- echo " ❌ AGENTS.md not found"
82
- fi
83
- echo ""
38
+ # Get changed files (different logic for commit vs push)
39
+ if [ "$HOOK_NAME" = "post-commit" ]; then
40
+ FILES=$(git diff --name-only HEAD~1 2>/dev/null || git diff --name-only --cached)
41
+ else
42
+ FILES=$(git log --name-only --oneline -1 $COMMIT_SHA | tail -n +2)
84
43
  fi
85
44
 
86
- # For consumer projects, always use the full node_modules path to avoid symlink issues
87
- # This ensures imports resolve correctly
88
- STRRAY_PATH=""
89
- for pkg in "strray-ai" "strray-framework"; do
90
- if [ -d "node_modules/$pkg/dist" ]; then
91
- STRRAY_PATH="node_modules/$pkg"
92
- break
45
+ # Trigger post-processor asynchronously (don't block git operations)
46
+ (
47
+ cd "$(dirname "$0")/../.." # Navigate to project root
48
+
49
+ # Find the StringRay plugin in node_modules or current project (development)
50
+ STRRAY_PLUGIN=""
51
+ if [ -d "node_modules/strray-framework" ]; then
52
+ STRRAY_PLUGIN="node_modules/strray-framework"
53
+ elif [ -d "node_modules/@strray/strray-framework" ]; then
54
+ STRRAY_PLUGIN="node_modules/@strray/strray-framework"
55
+ elif [ -d "node_modules/OpenCode/plugins/strray-framework" ]; then
56
+ STRRAY_PLUGIN="node_modules/OpenCode/plugins/strray-framework"
57
+ elif [ -f "dist/postprocessor/PostProcessor.js" ]; then
58
+ # Development mode - use current project
59
+ STRRAY_PLUGIN="."
93
60
  fi
94
- done
95
61
 
96
- if [ -z "$STRRAY_PATH" ]; then
97
- # Fallback to local dist for development
98
- if [ -d "dist" ]; then
99
- STRRAY_PATH="."
62
+ if command -v node >/dev/null 2>&1 && [ -n "$STRRAY_PLUGIN" ]; then
63
+ # Call a separate script to avoid bash variable issues
64
+ export COMMIT_SHA="$COMMIT_SHA"
65
+ export REPO="$REPO"
66
+ export BRANCH="$BRANCH"
67
+ export AUTHOR="$AUTHOR"
68
+ export STRRAY_PLUGIN="$STRRAY_PLUGIN"
69
+ export MONITORING_LEVEL="$MONITORING_LEVEL"
70
+ export IS_FULL_MONITORING="$([ "$MONITORING_LEVEL" = "full" ] && echo "true" || echo "false")"
71
+
72
+ # Run appropriate monitoring based on hook type
73
+ if [ "$HOOK_NAME" = "post-commit" ]; then
74
+ # LIGHT MONITORING: Quick validation, don't block git workflow
75
+ # Timeout: 2 seconds max, log metrics for monitoring
76
+ START_TIME=$(date +%s)
77
+ timeout 2 node -e "
78
+ (async () => {
79
+ try {
80
+ // Use import resolver to avoid hardcoded dist paths
81
+ const { importResolver } = await import('./utils/import-resolver.js');
82
+ const { LightweightValidator } = await importResolver.importModule('postprocessor/validation/LightweightValidator');
83
+
84
+ const validator = new LightweightValidator();
85
+ const result = await validator.validate();
86
+
87
+ if (result.warnings.length > 0) {
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) });
90
+ }
91
+
92
+ if (!result.passed) {
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) });
95
+ process.exit(1);
96
+ }
97
+
98
+ await frameworkLogger.log('-git-hook-trigger', '-post-commit-validation-passed-in-result-duration-', 'success', { message: '✅ Post-commit: Validation passed in ' + result.duration + 'ms' });
99
+ } catch (error) {
100
+ console.error('❌ Post-commit validation failed:', error instanceof Error ? error.message : String(error));
101
+ process.exit(1);
102
+ }
103
+ })();
104
+ " 2>/dev/null
105
+ EXIT_CODE=$?
106
+ END_TIME=$(date +%s)
107
+ DURATION=$((END_TIME - START_TIME))
108
+
109
+ # Log metrics for monitoring (convert to milliseconds)
110
+ DURATION_MS=$((DURATION * 1000))
111
+ # LOG CLEANUP: Remove old log files after validation
112
+ # Use relative path from CWD - works in both dev and consumer
113
+ node -e "
114
+ (async () => {
115
+ try {
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
124
+ });
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
+ }
131
+ } catch (error) {
132
+ console.error('Log cleanup failed:', error.message);
133
+ }
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});
139
+ " 2>/dev/null
140
+ EXIT_CODE=$?
141
+ END_TIME=$(date +%s)
142
+ DURATION=$((END_TIME - START_TIME))
143
+
144
+ # Log comprehensive metrics for monitoring (convert to milliseconds)
145
+ DURATION_MS=$((DURATION * 1000))
146
+ echo "HOOK_METRICS: post-push duration=${DURATION_MS}ms exit_code=${EXIT_CODE}" >&2
147
+
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
+
164
+ [ $EXIT_CODE -eq 0 ] && exit 0 || exit 1
165
+ fi
100
166
  else
101
- exit 0
167
+ echo "Warning: StringRay plugin not found or Node.js not available, skipping post-processor"
102
168
  fi
103
- fi
104
-
105
- # Run post-processor in background with Node.js
106
- node --input-type=module << EOF &>/dev/null || true
107
- import { PostProcessor } from './$STRRAY_PATH/dist/postprocessor/PostProcessor.js';
108
- import { StrRayStateManager } from './$STRRAY_PATH/dist/state/state-manager.js';
109
-
110
- const stateManager = new StrRayStateManager();
111
- const postProcessor = new PostProcessor(stateManager, null, {
112
- reporting: { enabled: false }
113
- });
114
-
115
- const files = \`$FILES\`.split('\n').filter(f => f.endsWith('.ts') && !f.includes('.test.'));
116
-
117
- await postProcessor.executePostProcessorLoop({
118
- commitSha: '$COMMIT_SHA',
119
- repository: 'strray-framework/stringray',
120
- branch: '$BRANCH',
121
- author: '$AUTHOR',
122
- files: files,
123
- trigger: 'git-hook'
124
- });
125
-
126
- console.log('Post-processor completed for', files.length, 'files');
127
- EOF
169
+ )
128
170
 
171
+ # Don't wait for background process
129
172
  exit 0
@@ -97,7 +97,7 @@ fi
97
97
 
98
98
  await frameworkLogger.log('-git-hook-trigger', '-post-commit-validation-passed-in-result-duration-', 'success', { message: '✅ Post-commit: Validation passed in ' + result.duration + 'ms' });
99
99
  } catch (error) {
100
- console.error(' Post-commit validation failed:', error instanceof Error ? error.message : String(error));
100
+ await frameworkLogger.log('git-hook-trigger', 'post-commit-validation-failed', 'error', { error: error instanceof Error ? error.message : String(error) });
101
101
  process.exit(1);
102
102
  }
103
103
  })();
@@ -115,16 +115,72 @@ fi
115
115
  try {
116
116
  // Use dynamic import that works in both dev and consumer
117
117
  const basePath = process.env.STRRAY_BASE_PATH || '.';
118
+ // First archive logs (compress and rotate) before cleanup
119
+ const { archiveLogFiles } = await import(basePath + '/dist/postprocessor/triggers/GitHookTrigger.js');
120
+ const archiveResult = await archiveLogFiles({
121
+ archiveDirectory: 'logs/framework',
122
+ maxFileSizeMB: 10, // Archive if > 10MB
123
+ rotationIntervalHours: 24, // Archive if > 24 hours old
124
+ compressionEnabled: true,
125
+ maxAgeHours: 168, // Keep archives for 7 days
126
+ directories: ['logs/framework'],
127
+ excludePatterns: []
128
+ });
129
+ if (archiveResult.archived > 0) {
130
+ await frameworkLogger.log('-git-hook-trigger', '-archived-log-files-', 'info', { message: `📦 Archived ${archiveResult.archived} log files` });
131
+ }
132
+
133
+ // Then cleanup old files
118
134
  const { cleanupLogFiles } = await import(basePath + '/dist/postprocessor/triggers/GitHookTrigger.js');
119
135
  const result = await cleanupLogFiles({
120
136
  maxAgeHours: 24,
121
- excludePatterns: ['logs/framework/activity.log', 'logs/agents/refactoring-log.md', 'current-session.log'],
137
+ excludePatterns: [
138
+ // Core inference/logging - NEVER DELETE
139
+ 'activity.log',
140
+ 'framework-activity-',
141
+ 'strray-plugin-',
142
+
143
+ // Analysis & reflections - Contains inference data
144
+ 'kernel-',
145
+ 'reflection-',
146
+
147
+ // Documentation & plans - Important artifacts
148
+ '.md',
149
+ 'AUTOMATED_',
150
+ 'REFACTORING-',
151
+ 'release-',
152
+
153
+ // Subdirectories with important data (but test-activity should be cleaned)
154
+ 'deployment/',
155
+ 'monitoring/',
156
+ 'reports/',
157
+ 'reflections/',
158
+
159
+ // Init logs can be cleaned but keep recent
160
+ 'strray-init-2026-01-2', // Keep Jan 20s
161
+ 'strray-init-2026-01-3', // Keep Jan 30s
162
+
163
+ // Other important files
164
+ 'current-session.log',
165
+ 'full-test-run.log',
166
+ 'kernel-codex',
167
+ 'kernel-methodology',
168
+ 'kernel-status',
169
+ 'kernel-update',
170
+ 'kernel-v2',
171
+ ],
122
172
  directories: ['logs/'],
123
173
  enabled: true
124
174
  });
125
175
  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` });
176
+ await frameworkLogger.log('-git-hook-trigger', '-cleaned-result-cleaned-old-log-files-', 'info', { message: '🧹 Cleaned ' + result.cleaned + ' old log files' });
127
177
  }
178
+ if (result.errors.length > 0) {
179
+ await frameworkLogger.log('git-hook-trigger', 'log-cleanup-errors', 'error', { errors: result.errors });
180
+ }
181
+ } catch (error) {
182
+ await frameworkLogger.log('git-hook-trigger', 'log-cleanup-failed', 'error', { error: error instanceof Error ? error.message : String(error) });
183
+ }
128
184
  if (result.errors.length > 0) {
129
185
  console.error('Log cleanup errors:', result.errors);
130
186
  }
@@ -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