@skillsmith/core 0.4.1 → 0.4.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 (374) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
  3. package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
  4. package/dist/src/analysis/adapters/java-parsers.js +114 -0
  5. package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
  6. package/dist/src/analysis/adapters/java.d.ts +1 -51
  7. package/dist/src/analysis/adapters/java.d.ts.map +1 -1
  8. package/dist/src/analysis/adapters/java.js +94 -205
  9. package/dist/src/analysis/adapters/java.js.map +1 -1
  10. package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
  11. package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
  12. package/dist/src/analysis/adapters/python-frameworks.js +86 -0
  13. package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
  14. package/dist/src/analysis/adapters/python.d.ts +0 -50
  15. package/dist/src/analysis/adapters/python.d.ts.map +1 -1
  16. package/dist/src/analysis/adapters/python.js +5 -120
  17. package/dist/src/analysis/adapters/python.js.map +1 -1
  18. package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
  19. package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
  20. package/dist/src/analysis/adapters/rust-parsers.js +94 -0
  21. package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
  22. package/dist/src/analysis/adapters/rust.d.ts +1 -43
  23. package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
  24. package/dist/src/analysis/adapters/rust.js +74 -173
  25. package/dist/src/analysis/adapters/rust.js.map +1 -1
  26. package/dist/src/analysis/worker-pool.d.ts +25 -52
  27. package/dist/src/analysis/worker-pool.d.ts.map +1 -1
  28. package/dist/src/analysis/worker-pool.js +29 -181
  29. package/dist/src/analysis/worker-pool.js.map +1 -1
  30. package/dist/src/analysis/worker-types.d.ts +64 -0
  31. package/dist/src/analysis/worker-types.d.ts.map +1 -0
  32. package/dist/src/analysis/worker-types.js +11 -0
  33. package/dist/src/analysis/worker-types.js.map +1 -0
  34. package/dist/src/analysis/worker-utils.d.ts +49 -0
  35. package/dist/src/analysis/worker-utils.d.ts.map +1 -0
  36. package/dist/src/analysis/worker-utils.js +206 -0
  37. package/dist/src/analysis/worker-utils.js.map +1 -0
  38. package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
  39. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  40. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
  41. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
  42. package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
  43. package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
  44. package/dist/src/analytics/AnalyticsRepository.js +16 -129
  45. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  46. package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
  47. package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
  48. package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
  49. package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
  50. package/dist/src/api/client.d.ts +5 -121
  51. package/dist/src/api/client.d.ts.map +1 -1
  52. package/dist/src/api/client.js +24 -136
  53. package/dist/src/api/client.js.map +1 -1
  54. package/dist/src/api/schemas.d.ts +122 -0
  55. package/dist/src/api/schemas.d.ts.map +1 -0
  56. package/dist/src/api/schemas.js +71 -0
  57. package/dist/src/api/schemas.js.map +1 -0
  58. package/dist/src/api/utils.d.ts +46 -0
  59. package/dist/src/api/utils.d.ts.map +1 -0
  60. package/dist/src/api/utils.js +96 -0
  61. package/dist/src/api/utils.js.map +1 -0
  62. package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
  63. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
  64. package/dist/src/billing/GDPRComplianceService.js.map +1 -1
  65. package/dist/src/billing/StripeClient.d.ts +3 -62
  66. package/dist/src/billing/StripeClient.d.ts.map +1 -1
  67. package/dist/src/billing/StripeClient.js +10 -68
  68. package/dist/src/billing/StripeClient.js.map +1 -1
  69. package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
  70. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
  71. package/dist/src/billing/StripeReconciliationJob.js +1 -41
  72. package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
  73. package/dist/src/billing/StripeWebhookHandler.d.ts +3 -59
  74. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  75. package/dist/src/billing/StripeWebhookHandler.js +14 -304
  76. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  77. package/dist/src/billing/gdpr-types.d.ts +103 -0
  78. package/dist/src/billing/gdpr-types.d.ts.map +1 -0
  79. package/dist/src/billing/gdpr-types.js +7 -0
  80. package/dist/src/billing/gdpr-types.js.map +1 -0
  81. package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
  82. package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
  83. package/dist/src/billing/reconciliation-helpers.js +53 -0
  84. package/dist/src/billing/reconciliation-helpers.js.map +1 -0
  85. package/dist/src/billing/reconciliation-types.d.ts +71 -0
  86. package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
  87. package/dist/src/billing/reconciliation-types.js +7 -0
  88. package/dist/src/billing/reconciliation-types.js.map +1 -0
  89. package/dist/src/billing/stripe-client-types.d.ts +45 -0
  90. package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
  91. package/dist/src/billing/stripe-client-types.js +7 -0
  92. package/dist/src/billing/stripe-client-types.js.map +1 -0
  93. package/dist/src/billing/stripe-helpers.d.ts +17 -0
  94. package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
  95. package/dist/src/billing/stripe-helpers.js +50 -0
  96. package/dist/src/billing/stripe-helpers.js.map +1 -0
  97. package/dist/src/billing/webhook-handlers.d.ts +56 -0
  98. package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
  99. package/dist/src/billing/webhook-handlers.js +303 -0
  100. package/dist/src/billing/webhook-handlers.js.map +1 -0
  101. package/dist/src/billing/webhook-types.d.ts +42 -0
  102. package/dist/src/billing/webhook-types.d.ts.map +1 -0
  103. package/dist/src/billing/webhook-types.js +7 -0
  104. package/dist/src/billing/webhook-types.js.map +1 -0
  105. package/dist/src/config/index.d.ts +118 -0
  106. package/dist/src/config/index.d.ts.map +1 -0
  107. package/dist/src/config/index.js +172 -0
  108. package/dist/src/config/index.js.map +1 -0
  109. package/dist/src/db/migration-types.d.ts +101 -0
  110. package/dist/src/db/migration-types.d.ts.map +1 -0
  111. package/dist/src/db/migration-types.js +6 -0
  112. package/dist/src/db/migration-types.js.map +1 -0
  113. package/dist/src/db/migration.d.ts +7 -104
  114. package/dist/src/db/migration.d.ts.map +1 -1
  115. package/dist/src/db/migration.js +15 -65
  116. package/dist/src/db/migration.js.map +1 -1
  117. package/dist/src/embeddings/embedding-types.d.ts +44 -0
  118. package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
  119. package/dist/src/embeddings/embedding-types.js +6 -0
  120. package/dist/src/embeddings/embedding-types.js.map +1 -0
  121. package/dist/src/embeddings/embedding-utils.d.ts +42 -0
  122. package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
  123. package/dist/src/embeddings/embedding-utils.js +121 -0
  124. package/dist/src/embeddings/embedding-utils.js.map +1 -0
  125. package/dist/src/embeddings/index.d.ts +36 -112
  126. package/dist/src/embeddings/index.d.ts.map +1 -1
  127. package/dist/src/embeddings/index.js +37 -210
  128. package/dist/src/embeddings/index.js.map +1 -1
  129. package/dist/src/exports/repositories.d.ts +18 -0
  130. package/dist/src/exports/repositories.d.ts.map +1 -0
  131. package/dist/src/exports/repositories.js +30 -0
  132. package/dist/src/exports/repositories.js.map +1 -0
  133. package/dist/src/exports/services.d.ts +30 -0
  134. package/dist/src/exports/services.d.ts.map +1 -0
  135. package/dist/src/exports/services.js +70 -0
  136. package/dist/src/exports/services.js.map +1 -0
  137. package/dist/src/exports/types.d.ts +21 -0
  138. package/dist/src/exports/types.d.ts.map +1 -0
  139. package/dist/src/exports/types.js +12 -0
  140. package/dist/src/exports/types.js.map +1 -0
  141. package/dist/src/index.d.ts +11 -55
  142. package/dist/src/index.d.ts.map +1 -1
  143. package/dist/src/index.js +24 -59
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
  146. package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
  147. package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
  148. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  149. package/dist/src/pipeline/pipeline-types.d.ts +132 -0
  150. package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
  151. package/dist/src/pipeline/pipeline-types.js +6 -0
  152. package/dist/src/pipeline/pipeline-types.js.map +1 -0
  153. package/dist/src/routing/expert-types.d.ts +109 -0
  154. package/dist/src/routing/expert-types.d.ts.map +1 -0
  155. package/dist/src/routing/expert-types.js +162 -0
  156. package/dist/src/routing/expert-types.js.map +1 -0
  157. package/dist/src/routing/request-types.d.ts +113 -0
  158. package/dist/src/routing/request-types.d.ts.map +1 -0
  159. package/dist/src/routing/request-types.js +9 -0
  160. package/dist/src/routing/request-types.js.map +1 -0
  161. package/dist/src/routing/types.d.ts +5 -207
  162. package/dist/src/routing/types.d.ts.map +1 -1
  163. package/dist/src/routing/types.js +3 -153
  164. package/dist/src/routing/types.js.map +1 -1
  165. package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
  166. package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
  167. package/dist/src/scripts/github-import/github-auth.js +201 -0
  168. package/dist/src/scripts/github-import/github-auth.js.map +1 -0
  169. package/dist/src/scripts/github-import/github-client.d.ts +5 -5
  170. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  171. package/dist/src/scripts/github-import/github-client.js +5 -203
  172. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  173. package/dist/src/scripts/merge-skills.d.ts +5 -27
  174. package/dist/src/scripts/merge-skills.d.ts.map +1 -1
  175. package/dist/src/scripts/merge-skills.js +4 -144
  176. package/dist/src/scripts/merge-skills.js.map +1 -1
  177. package/dist/src/scripts/merge-types.d.ts +72 -0
  178. package/dist/src/scripts/merge-types.d.ts.map +1 -0
  179. package/dist/src/scripts/merge-types.js +7 -0
  180. package/dist/src/scripts/merge-types.js.map +1 -0
  181. package/dist/src/scripts/merge-utils.d.ts +23 -0
  182. package/dist/src/scripts/merge-utils.d.ts.map +1 -0
  183. package/dist/src/scripts/merge-utils.js +150 -0
  184. package/dist/src/scripts/merge-utils.js.map +1 -0
  185. package/dist/src/scripts/review-categories.d.ts +41 -0
  186. package/dist/src/scripts/review-categories.d.ts.map +1 -0
  187. package/dist/src/scripts/review-categories.js +316 -0
  188. package/dist/src/scripts/review-categories.js.map +1 -0
  189. package/dist/src/scripts/review-lenny-skills.d.ts +1 -0
  190. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -1
  191. package/dist/src/scripts/review-lenny-skills.js +5 -310
  192. package/dist/src/scripts/review-lenny-skills.js.map +1 -1
  193. package/dist/src/security/AuditLogger.d.ts +4 -75
  194. package/dist/src/security/AuditLogger.d.ts.map +1 -1
  195. package/dist/src/security/AuditLogger.js +2 -11
  196. package/dist/src/security/AuditLogger.js.map +1 -1
  197. package/dist/src/security/audit-types.d.ts +96 -0
  198. package/dist/src/security/audit-types.d.ts.map +1 -0
  199. package/dist/src/security/audit-types.js +15 -0
  200. package/dist/src/security/audit-types.js.map +1 -0
  201. package/dist/src/security/sanitization.d.ts +1 -85
  202. package/dist/src/security/sanitization.d.ts.map +1 -1
  203. package/dist/src/security/sanitization.js +2 -133
  204. package/dist/src/security/sanitization.js.map +1 -1
  205. package/dist/src/security/stripe-validators.d.ts +92 -0
  206. package/dist/src/security/stripe-validators.d.ts.map +1 -0
  207. package/dist/src/security/stripe-validators.js +139 -0
  208. package/dist/src/security/stripe-validators.js.map +1 -0
  209. package/dist/src/services/SearchService.d.ts +2 -31
  210. package/dist/src/services/SearchService.d.ts.map +1 -1
  211. package/dist/src/services/SearchService.helpers.d.ts +42 -0
  212. package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
  213. package/dist/src/services/SearchService.helpers.js +128 -0
  214. package/dist/src/services/SearchService.helpers.js.map +1 -0
  215. package/dist/src/services/SearchService.js +14 -132
  216. package/dist/src/services/SearchService.js.map +1 -1
  217. package/dist/src/services/SearchService.types.d.ts +53 -0
  218. package/dist/src/services/SearchService.types.d.ts.map +1 -0
  219. package/dist/src/services/SearchService.types.js +7 -0
  220. package/dist/src/services/SearchService.types.js.map +1 -0
  221. package/dist/src/services/SkillAnalyzer.d.ts +6 -86
  222. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -1
  223. package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
  224. package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
  225. package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
  226. package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
  227. package/dist/src/services/SkillAnalyzer.js +16 -167
  228. package/dist/src/services/SkillAnalyzer.js.map +1 -1
  229. package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
  230. package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
  231. package/dist/src/services/SkillAnalyzer.types.js +9 -0
  232. package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
  233. package/dist/src/services/SkillDecomposer.d.ts +4 -70
  234. package/dist/src/services/SkillDecomposer.d.ts.map +1 -1
  235. package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
  236. package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
  237. package/dist/src/services/SkillDecomposer.helpers.js +277 -0
  238. package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
  239. package/dist/src/services/SkillDecomposer.js +6 -249
  240. package/dist/src/services/SkillDecomposer.js.map +1 -1
  241. package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
  242. package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
  243. package/dist/src/services/SkillDecomposer.types.js +9 -0
  244. package/dist/src/services/SkillDecomposer.types.js.map +1 -0
  245. package/dist/src/services/SubagentGenerator.d.ts +12 -3
  246. package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
  247. package/dist/src/services/SubagentGenerator.js +43 -10
  248. package/dist/src/services/SubagentGenerator.js.map +1 -1
  249. package/dist/src/services/TaskRunner.d.ts +227 -0
  250. package/dist/src/services/TaskRunner.d.ts.map +1 -0
  251. package/dist/src/services/TaskRunner.js +423 -0
  252. package/dist/src/services/TaskRunner.js.map +1 -0
  253. package/dist/src/services/TransformationService.d.ts +8 -4
  254. package/dist/src/services/TransformationService.d.ts.map +1 -1
  255. package/dist/src/services/TransformationService.js +58 -34
  256. package/dist/src/services/TransformationService.js.map +1 -1
  257. package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
  258. package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
  259. package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
  260. package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
  261. package/dist/src/services/__tests__/TransformationService.test.js +12 -10
  262. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
  263. package/dist/src/telemetry/metric-helpers.d.ts +47 -0
  264. package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
  265. package/dist/src/telemetry/metric-helpers.js +96 -0
  266. package/dist/src/telemetry/metric-helpers.js.map +1 -0
  267. package/dist/src/telemetry/metric-types.d.ts +73 -0
  268. package/dist/src/telemetry/metric-types.d.ts.map +1 -0
  269. package/dist/src/telemetry/metric-types.js +9 -0
  270. package/dist/src/telemetry/metric-types.js.map +1 -0
  271. package/dist/src/telemetry/metrics.d.ts +8 -119
  272. package/dist/src/telemetry/metrics.d.ts.map +1 -1
  273. package/dist/src/telemetry/metrics.js +20 -193
  274. package/dist/src/telemetry/metrics.js.map +1 -1
  275. package/dist/src/telemetry/span-utils.d.ts +30 -0
  276. package/dist/src/telemetry/span-utils.d.ts.map +1 -0
  277. package/dist/src/telemetry/span-utils.js +62 -0
  278. package/dist/src/telemetry/span-utils.js.map +1 -0
  279. package/dist/src/telemetry/tracer-types.d.ts +91 -0
  280. package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
  281. package/dist/src/telemetry/tracer-types.js +6 -0
  282. package/dist/src/telemetry/tracer-types.js.map +1 -0
  283. package/dist/src/telemetry/tracer.d.ts +5 -122
  284. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  285. package/dist/src/telemetry/tracer.js +23 -168
  286. package/dist/src/telemetry/tracer.js.map +1 -1
  287. package/dist/src/triggers/TriggerDetector.d.ts +6 -142
  288. package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
  289. package/dist/src/triggers/TriggerDetector.js +15 -247
  290. package/dist/src/triggers/TriggerDetector.js.map +1 -1
  291. package/dist/src/triggers/trigger-constants.d.ts +22 -0
  292. package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
  293. package/dist/src/triggers/trigger-constants.js +185 -0
  294. package/dist/src/triggers/trigger-constants.js.map +1 -0
  295. package/dist/src/triggers/trigger-types.d.ts +90 -0
  296. package/dist/src/triggers/trigger-types.d.ts.map +1 -0
  297. package/dist/src/triggers/trigger-types.js +6 -0
  298. package/dist/src/triggers/trigger-types.js.map +1 -0
  299. package/dist/src/types/skill.d.ts +4 -1
  300. package/dist/src/types/skill.d.ts.map +1 -1
  301. package/dist/src/types/skill.js.map +1 -1
  302. package/dist/src/types.d.ts +6 -2
  303. package/dist/src/types.d.ts.map +1 -1
  304. package/dist/src/types.js +1 -0
  305. package/dist/src/types.js.map +1 -1
  306. package/dist/src/validation/index.d.ts +5 -105
  307. package/dist/src/validation/index.d.ts.map +1 -1
  308. package/dist/src/validation/index.js +9 -421
  309. package/dist/src/validation/index.js.map +1 -1
  310. package/dist/src/validation/input-validators.d.ts +68 -0
  311. package/dist/src/validation/input-validators.d.ts.map +1 -0
  312. package/dist/src/validation/input-validators.js +126 -0
  313. package/dist/src/validation/input-validators.js.map +1 -0
  314. package/dist/src/validation/path-validators.d.ts +23 -0
  315. package/dist/src/validation/path-validators.d.ts.map +1 -0
  316. package/dist/src/validation/path-validators.js +47 -0
  317. package/dist/src/validation/path-validators.js.map +1 -0
  318. package/dist/src/validation/url-validators.d.ts +55 -0
  319. package/dist/src/validation/url-validators.d.ts.map +1 -0
  320. package/dist/src/validation/url-validators.js +267 -0
  321. package/dist/src/validation/url-validators.js.map +1 -0
  322. package/dist/src/validation/validation-error.d.ts +14 -0
  323. package/dist/src/validation/validation-error.d.ts.map +1 -0
  324. package/dist/src/validation/validation-error.js +19 -0
  325. package/dist/src/validation/validation-error.js.map +1 -0
  326. package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
  327. package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
  328. package/dist/src/webhooks/WebhookPayload.js +1 -122
  329. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  330. package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
  331. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
  332. package/dist/src/webhooks/WebhookQueue.js +4 -11
  333. package/dist/src/webhooks/WebhookQueue.js.map +1 -1
  334. package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
  335. package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
  336. package/dist/src/webhooks/WebhookQueue.types.js +10 -0
  337. package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
  338. package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
  339. package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
  340. package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
  341. package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
  342. package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
  343. package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
  344. package/dist/src/webhooks/webhook-schemas.js +132 -0
  345. package/dist/src/webhooks/webhook-schemas.js.map +1 -0
  346. package/dist/src/webhooks/webhook-types.d.ts +222 -0
  347. package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
  348. package/dist/src/webhooks/webhook-types.js +10 -0
  349. package/dist/src/webhooks/webhook-types.js.map +1 -0
  350. package/dist/tests/api/utils.test.d.ts +7 -0
  351. package/dist/tests/api/utils.test.d.ts.map +1 -0
  352. package/dist/tests/api/utils.test.js +121 -0
  353. package/dist/tests/api/utils.test.js.map +1 -0
  354. package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
  355. package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
  356. package/dist/tests/integration/neural/neural-fixtures.js +49 -0
  357. package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
  358. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
  359. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
  360. package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
  361. package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
  362. package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
  363. package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
  364. package/dist/tests/integration/neural/neural-mocks.js +288 -0
  365. package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
  366. package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
  367. package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
  368. package/dist/tests/integration/neural/neural-test-utils.js +35 -0
  369. package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
  370. package/dist/tests/integration/neural/setup.d.ts +6 -165
  371. package/dist/tests/integration/neural/setup.d.ts.map +1 -1
  372. package/dist/tests/integration/neural/setup.js +9 -477
  373. package/dist/tests/integration/neural/setup.js.map +1 -1
  374. package/package.json +4 -4
@@ -0,0 +1,103 @@
1
+ /**
2
+ * SMI-1788: SkillAnalyzer Helpers
3
+ *
4
+ * Tool detection patterns, thresholds, and utility functions
5
+ * for skill analysis and optimization.
6
+ */
7
+ import type { ConfidenceLevel } from './SkillAnalyzer.types.js';
8
+ /**
9
+ * Tool detection patterns for analyzing skill content
10
+ */
11
+ export declare const TOOL_PATTERNS: Record<string, {
12
+ patterns: string[];
13
+ weight: number;
14
+ }>;
15
+ /**
16
+ * Thresholds for optimization decisions
17
+ */
18
+ export declare const THRESHOLDS: {
19
+ /** Maximum lines before recommending decomposition */
20
+ readonly maxLinesBeforeDecompose: 500;
21
+ /** Minimum lines for an extractable section */
22
+ readonly minSectionLines: 50;
23
+ /** Heavy tool usage count that suggests subagent */
24
+ readonly heavyToolUsageCount: 5;
25
+ /** Sequential Task() calls that should be parallelized */
26
+ readonly sequentialTaskThreshold: 2;
27
+ /** Minimum optimization score to recommend transformation */
28
+ readonly minTransformScore: 30;
29
+ /** Large examples section threshold */
30
+ readonly largeExamplesThreshold: 200;
31
+ };
32
+ /**
33
+ * Escape special regex characters in a string
34
+ * @param str - String to escape
35
+ * @returns Escaped string safe for use in RegExp
36
+ */
37
+ export declare function escapeRegex(str: string): string;
38
+ /**
39
+ * Determine confidence level based on match count
40
+ * @param matchCount - Number of detected tools
41
+ * @returns Confidence level
42
+ */
43
+ export declare function getConfidenceLevel(matchCount: number): ConfidenceLevel;
44
+ /**
45
+ * Estimate examples lines by looking for code blocks
46
+ * @param content - Full skill content
47
+ * @returns Estimated number of lines in code blocks
48
+ */
49
+ export declare function estimateExamplesLines(content: string): number;
50
+ /**
51
+ * Detect tools in content
52
+ * @param content - Skill content to analyze
53
+ * @returns Object with detected tools and total weight
54
+ */
55
+ export declare function detectTools(content: string): {
56
+ tools: string[];
57
+ totalWeight: number;
58
+ };
59
+ /**
60
+ * Count specific command patterns in content
61
+ * @param content - Skill content to analyze
62
+ * @returns Counts for bash, read, and write commands
63
+ */
64
+ export declare function countCommandPatterns(content: string): {
65
+ bashCommandCount: number;
66
+ fileReadCount: number;
67
+ fileWriteCount: number;
68
+ };
69
+ /**
70
+ * Determine if tool usage suggests a subagent would be beneficial
71
+ * @param bashCount - Number of bash commands
72
+ * @param fileOpCount - Total file operations (read + write)
73
+ * @param totalWeight - Total tool weight
74
+ * @returns Whether subagent is suggested
75
+ */
76
+ export declare function shouldSuggestSubagent(bashCount: number, fileOpCount: number, totalWeight: number): boolean;
77
+ /**
78
+ * Count sequential Task() calls in content
79
+ * @param content - Skill content to analyze
80
+ * @returns Count of sequential Task calls
81
+ */
82
+ export declare function countSequentialTaskCalls(content: string): number;
83
+ /**
84
+ * Calculate batch savings percentage
85
+ * @param sequentialCalls - Number of sequential Task calls
86
+ * @returns Estimated savings percentage
87
+ */
88
+ export declare function calculateBatchSavings(sequentialCalls: number): number;
89
+ /**
90
+ * Determine extraction reason for a section
91
+ * @param sectionName - Name of the section
92
+ * @param lineCount - Number of lines in section
93
+ * @returns Human-readable extraction reason
94
+ */
95
+ export declare function getExtractionReason(sectionName: string, lineCount: number): string;
96
+ /**
97
+ * Calculate extraction priority based on size ratio
98
+ * @param lineCount - Section line count
99
+ * @param totalLines - Total document lines
100
+ * @returns Priority (1 = highest, 3 = lowest)
101
+ */
102
+ export declare function calculateExtractionPriority(lineCount: number, totalLines: number): number;
103
+ //# sourceMappingURL=SkillAnalyzer.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillAnalyzer.helpers.d.ts","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyDhF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB,sDAAsD;;IAGtD,+CAA+C;;IAG/C,oDAAoD;;IAGpD,0DAA0D;;IAG1D,6DAA6D;;IAG7D,uCAAuC;;CAE/B,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAItE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS7D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAmBrF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACvB,CAMA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBhE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBlF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAMzF"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * SMI-1788: SkillAnalyzer Helpers
3
+ *
4
+ * Tool detection patterns, thresholds, and utility functions
5
+ * for skill analysis and optimization.
6
+ */
7
+ /**
8
+ * Tool detection patterns for analyzing skill content
9
+ */
10
+ export const TOOL_PATTERNS = {
11
+ Read: {
12
+ patterns: ['read file', 'read the file', 'examine', 'view file', 'cat ', 'Read tool'],
13
+ weight: 1,
14
+ },
15
+ Write: {
16
+ patterns: [
17
+ 'write file',
18
+ 'create file',
19
+ 'save to',
20
+ 'output to file',
21
+ 'Write tool',
22
+ 'write the file',
23
+ ],
24
+ weight: 2,
25
+ },
26
+ Edit: {
27
+ patterns: ['edit file', 'modify file', 'update file', 'patch', 'Edit tool', 'replace in'],
28
+ weight: 2,
29
+ },
30
+ Bash: {
31
+ patterns: [
32
+ 'bash',
33
+ 'npm ',
34
+ 'npx ',
35
+ 'git ',
36
+ 'docker',
37
+ 'yarn ',
38
+ 'pnpm ',
39
+ 'execute command',
40
+ 'run command',
41
+ 'terminal',
42
+ 'shell',
43
+ 'Bash tool',
44
+ ],
45
+ weight: 3,
46
+ },
47
+ Grep: {
48
+ patterns: ['grep', 'search for', 'find text', 'pattern match', 'Grep tool'],
49
+ weight: 1,
50
+ },
51
+ Glob: {
52
+ patterns: ['glob', 'find file', 'file pattern', 'list files', 'Glob tool'],
53
+ weight: 1,
54
+ },
55
+ WebFetch: {
56
+ patterns: ['fetch', 'http', 'api call', 'url', 'WebFetch', 'download', 'request'],
57
+ weight: 2,
58
+ },
59
+ WebSearch: {
60
+ patterns: ['web search', 'search online', 'lookup online', 'WebSearch'],
61
+ weight: 2,
62
+ },
63
+ Task: {
64
+ patterns: ['Task(', 'Task tool', 'spawn agent', 'delegate to', 'subagent'],
65
+ weight: 3,
66
+ },
67
+ };
68
+ /**
69
+ * Thresholds for optimization decisions
70
+ */
71
+ export const THRESHOLDS = {
72
+ /** Maximum lines before recommending decomposition */
73
+ maxLinesBeforeDecompose: 500,
74
+ /** Minimum lines for an extractable section */
75
+ minSectionLines: 50,
76
+ /** Heavy tool usage count that suggests subagent */
77
+ heavyToolUsageCount: 5,
78
+ /** Sequential Task() calls that should be parallelized */
79
+ sequentialTaskThreshold: 2,
80
+ /** Minimum optimization score to recommend transformation */
81
+ minTransformScore: 30,
82
+ /** Large examples section threshold */
83
+ largeExamplesThreshold: 200,
84
+ };
85
+ /**
86
+ * Escape special regex characters in a string
87
+ * @param str - String to escape
88
+ * @returns Escaped string safe for use in RegExp
89
+ */
90
+ export function escapeRegex(str) {
91
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
92
+ }
93
+ /**
94
+ * Determine confidence level based on match count
95
+ * @param matchCount - Number of detected tools
96
+ * @returns Confidence level
97
+ */
98
+ export function getConfidenceLevel(matchCount) {
99
+ if (matchCount >= 4)
100
+ return 'high';
101
+ if (matchCount >= 2)
102
+ return 'medium';
103
+ return 'low';
104
+ }
105
+ /**
106
+ * Estimate examples lines by looking for code blocks
107
+ * @param content - Full skill content
108
+ * @returns Estimated number of lines in code blocks
109
+ */
110
+ export function estimateExamplesLines(content) {
111
+ const codeBlockMatches = content.match(/```[\s\S]*?```/g) || [];
112
+ let totalLines = 0;
113
+ for (const block of codeBlockMatches) {
114
+ totalLines += block.split('\n').length;
115
+ }
116
+ return totalLines;
117
+ }
118
+ /**
119
+ * Detect tools in content
120
+ * @param content - Skill content to analyze
121
+ * @returns Object with detected tools and total weight
122
+ */
123
+ export function detectTools(content) {
124
+ const detectedTools = [];
125
+ let totalWeight = 0;
126
+ for (const [tool, config] of Object.entries(TOOL_PATTERNS)) {
127
+ for (const pattern of config.patterns) {
128
+ // Use word-boundary regex to avoid false positives
129
+ const regex = new RegExp(`\\b${escapeRegex(pattern)}\\b`, 'i');
130
+ if (regex.test(content)) {
131
+ if (!detectedTools.includes(tool)) {
132
+ detectedTools.push(tool);
133
+ totalWeight += config.weight;
134
+ }
135
+ break;
136
+ }
137
+ }
138
+ }
139
+ return { tools: detectedTools, totalWeight };
140
+ }
141
+ /**
142
+ * Count specific command patterns in content
143
+ * @param content - Skill content to analyze
144
+ * @returns Counts for bash, read, and write commands
145
+ */
146
+ export function countCommandPatterns(content) {
147
+ const bashCommandCount = (content.match(/\b(npm|npx|git|docker|yarn|pnpm)\s/gi) || []).length;
148
+ const fileReadCount = (content.match(/\b(read|cat|head|tail|grep|find)\s/gi) || []).length;
149
+ const fileWriteCount = (content.match(/\b(write|edit|modify|create)\s+file/gi) || []).length;
150
+ return { bashCommandCount, fileReadCount, fileWriteCount };
151
+ }
152
+ /**
153
+ * Determine if tool usage suggests a subagent would be beneficial
154
+ * @param bashCount - Number of bash commands
155
+ * @param fileOpCount - Total file operations (read + write)
156
+ * @param totalWeight - Total tool weight
157
+ * @returns Whether subagent is suggested
158
+ */
159
+ export function shouldSuggestSubagent(bashCount, fileOpCount, totalWeight) {
160
+ return (bashCount >= THRESHOLDS.heavyToolUsageCount ||
161
+ fileOpCount >= THRESHOLDS.heavyToolUsageCount ||
162
+ totalWeight >= 10);
163
+ }
164
+ /**
165
+ * Count sequential Task() calls in content
166
+ * @param content - Skill content to analyze
167
+ * @returns Count of sequential Task calls
168
+ */
169
+ export function countSequentialTaskCalls(content) {
170
+ const lines = content.split('\n');
171
+ let sequentialCalls = 0;
172
+ let consecutiveTaskLines = 0;
173
+ for (const line of lines) {
174
+ if (line.includes('Task(') || line.includes('Task (')) {
175
+ consecutiveTaskLines++;
176
+ }
177
+ else if (consecutiveTaskLines > 0) {
178
+ if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
179
+ sequentialCalls += consecutiveTaskLines;
180
+ }
181
+ consecutiveTaskLines = 0;
182
+ }
183
+ }
184
+ // Check for final sequence
185
+ if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
186
+ sequentialCalls += consecutiveTaskLines;
187
+ }
188
+ return sequentialCalls;
189
+ }
190
+ /**
191
+ * Calculate batch savings percentage
192
+ * @param sequentialCalls - Number of sequential Task calls
193
+ * @returns Estimated savings percentage
194
+ */
195
+ export function calculateBatchSavings(sequentialCalls) {
196
+ // Batching reduces context overhead by ~30-50%
197
+ return sequentialCalls >= THRESHOLDS.sequentialTaskThreshold
198
+ ? Math.min(50, sequentialCalls * 10)
199
+ : 0;
200
+ }
201
+ /**
202
+ * Determine extraction reason for a section
203
+ * @param sectionName - Name of the section
204
+ * @param lineCount - Number of lines in section
205
+ * @returns Human-readable extraction reason
206
+ */
207
+ export function getExtractionReason(sectionName, lineCount) {
208
+ const lowerName = sectionName.toLowerCase();
209
+ if (lowerName.includes('api') || lowerName.includes('reference')) {
210
+ return 'API reference sections can be loaded on-demand';
211
+ }
212
+ if (lowerName.includes('example') || lowerName.includes('usage')) {
213
+ return 'Examples can be progressively disclosed';
214
+ }
215
+ if (lowerName.includes('advanced') || lowerName.includes('configuration')) {
216
+ return 'Advanced topics are rarely needed in initial context';
217
+ }
218
+ if (lineCount > 100) {
219
+ return 'Large section suitable for sub-skill extraction';
220
+ }
221
+ return 'Section size suggests separate loading benefit';
222
+ }
223
+ /**
224
+ * Calculate extraction priority based on size ratio
225
+ * @param lineCount - Section line count
226
+ * @param totalLines - Total document lines
227
+ * @returns Priority (1 = highest, 3 = lowest)
228
+ */
229
+ export function calculateExtractionPriority(lineCount, totalLines) {
230
+ const sizeRatio = lineCount / totalLines;
231
+ if (sizeRatio > 0.3)
232
+ return 1;
233
+ if (sizeRatio > 0.15)
234
+ return 2;
235
+ return 3;
236
+ }
237
+ //# sourceMappingURL=SkillAnalyzer.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillAnalyzer.helpers.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * SMI-XXX: SkillAnalyzer - Analyze skills for optimization patterns
2
+ * SMI-1788: SkillAnalyzer - Analyze skills for optimization patterns
3
3
  *
4
4
  * Detects optimization opportunities based on:
5
5
  * - Line count (>500 lines suggests decomposition)
@@ -10,89 +10,16 @@
10
10
  * Part of the Skillsmith Optimization Layer for transforming
11
11
  * community skills into more performant versions.
12
12
  */
13
- /**
14
- * Tool detection patterns for analyzing skill content
15
- */
16
- const TOOL_PATTERNS = {
17
- Read: {
18
- patterns: ['read file', 'read the file', 'examine', 'view file', 'cat ', 'Read tool'],
19
- weight: 1,
20
- },
21
- Write: {
22
- patterns: [
23
- 'write file',
24
- 'create file',
25
- 'save to',
26
- 'output to file',
27
- 'Write tool',
28
- 'write the file',
29
- ],
30
- weight: 2,
31
- },
32
- Edit: {
33
- patterns: ['edit file', 'modify file', 'update file', 'patch', 'Edit tool', 'replace in'],
34
- weight: 2,
35
- },
36
- Bash: {
37
- patterns: [
38
- 'bash',
39
- 'npm ',
40
- 'npx ',
41
- 'git ',
42
- 'docker',
43
- 'yarn ',
44
- 'pnpm ',
45
- 'execute command',
46
- 'run command',
47
- 'terminal',
48
- 'shell',
49
- 'Bash tool',
50
- ],
51
- weight: 3,
52
- },
53
- Grep: {
54
- patterns: ['grep', 'search for', 'find text', 'pattern match', 'Grep tool'],
55
- weight: 1,
56
- },
57
- Glob: {
58
- patterns: ['glob', 'find file', 'file pattern', 'list files', 'Glob tool'],
59
- weight: 1,
60
- },
61
- WebFetch: {
62
- patterns: ['fetch', 'http', 'api call', 'url', 'WebFetch', 'download', 'request'],
63
- weight: 2,
64
- },
65
- WebSearch: {
66
- patterns: ['web search', 'search online', 'lookup online', 'WebSearch'],
67
- weight: 2,
68
- },
69
- Task: {
70
- patterns: ['Task(', 'Task tool', 'spawn agent', 'delegate to', 'subagent'],
71
- weight: 3,
72
- },
73
- };
74
- /**
75
- * Thresholds for optimization decisions
76
- */
77
- const THRESHOLDS = {
78
- /** Maximum lines before recommending decomposition */
79
- maxLinesBeforeDecompose: 500,
80
- /** Minimum lines for an extractable section */
81
- minSectionLines: 50,
82
- /** Heavy tool usage count that suggests subagent */
83
- heavyToolUsageCount: 5,
84
- /** Sequential Task() calls that should be parallelized */
85
- sequentialTaskThreshold: 2,
86
- /** Minimum optimization score to recommend transformation */
87
- minTransformScore: 30,
88
- /** Large examples section threshold */
89
- largeExamplesThreshold: 200,
90
- };
13
+ import { THRESHOLDS, detectTools, countCommandPatterns, shouldSuggestSubagent, getConfidenceLevel, estimateExamplesLines, countSequentialTaskCalls, calculateBatchSavings, getExtractionReason, calculateExtractionPriority, } from './SkillAnalyzer.helpers.js';
14
+ // Re-export helpers for testing and advanced usage
15
+ export { TOOL_PATTERNS, THRESHOLDS, escapeRegex, getConfidenceLevel, } from './SkillAnalyzer.helpers.js';
91
16
  /**
92
17
  * Analyze a skill's content for optimization opportunities
93
18
  *
94
19
  * @param content - The full SKILL.md content
95
20
  * @returns Analysis of optimization potential
21
+ * @remarks The lineCount for an empty string returns 1, matching standard
22
+ * String.split('\n') behavior where ''.split('\n') yields ['']
96
23
  */
97
24
  export function analyzeSkill(content) {
98
25
  const lines = content.split('\n');
@@ -106,7 +33,7 @@ export function analyzeSkill(content) {
106
33
  // Find extractable sections
107
34
  const extractableSections = findExtractableSections(sections, lineCount);
108
35
  // Generate recommendations
109
- const recommendations = generateRecommendations(lineCount, mainContentLines, examplesLines, toolUsage, taskPatterns, extractableSections);
36
+ const recommendations = generateRecommendations(lineCount, examplesLines, toolUsage, taskPatterns, extractableSections);
110
37
  // Calculate optimization score
111
38
  const optimizationScore = calculateOptimizationScore(lineCount, toolUsage, taskPatterns, recommendations);
112
39
  return {
@@ -177,46 +104,14 @@ function analyzeSections(content) {
177
104
  const mainContentLines = lines.length - examplesLines;
178
105
  return { mainContentLines, examplesLines, sections };
179
106
  }
180
- /**
181
- * Estimate examples lines by looking for code blocks
182
- */
183
- function estimateExamplesLines(content) {
184
- const codeBlockMatches = content.match(/```[\s\S]*?```/g) || [];
185
- let totalLines = 0;
186
- for (const block of codeBlockMatches) {
187
- totalLines += block.split('\n').length;
188
- }
189
- return totalLines;
190
- }
191
107
  /**
192
108
  * Analyze tool usage patterns in the content
193
109
  */
194
110
  function analyzeToolUsage(content) {
195
- const lowerContent = content.toLowerCase();
196
- const detectedTools = [];
197
- let totalWeight = 0;
198
- for (const [tool, config] of Object.entries(TOOL_PATTERNS)) {
199
- for (const pattern of config.patterns) {
200
- if (lowerContent.includes(pattern.toLowerCase())) {
201
- if (!detectedTools.includes(tool)) {
202
- detectedTools.push(tool);
203
- totalWeight += config.weight;
204
- }
205
- break;
206
- }
207
- }
208
- }
209
- // Count specific tool patterns
210
- const bashCommandCount = (content.match(/\b(npm|npx|git|docker|yarn|pnpm)\s/gi) || []).length;
211
- const fileReadCount = (content.match(/\b(read|cat|head|tail|grep|find)\s/gi) || []).length;
212
- const fileWriteCount = (content.match(/\b(write|edit|modify|create)\s+file/gi) || []).length;
213
- // Determine if heavy tool usage suggests subagent
214
- const suggestsSubagent = bashCommandCount >= THRESHOLDS.heavyToolUsageCount ||
215
- fileReadCount + fileWriteCount >= THRESHOLDS.heavyToolUsageCount ||
216
- totalWeight >= 10;
217
- // Calculate confidence
218
- const matchCount = detectedTools.length;
219
- const confidence = matchCount >= 4 ? 'high' : matchCount >= 2 ? 'medium' : 'low';
111
+ const { tools: detectedTools, totalWeight } = detectTools(content);
112
+ const { bashCommandCount, fileReadCount, fileWriteCount } = countCommandPatterns(content);
113
+ const suggestsSubagent = shouldSuggestSubagent(bashCommandCount, fileReadCount + fileWriteCount, totalWeight);
114
+ const confidence = getConfidenceLevel(detectedTools.length);
220
115
  return {
221
116
  detectedTools,
222
117
  bashCommandCount,
@@ -230,32 +125,11 @@ function analyzeToolUsage(content) {
230
125
  * Analyze Task() call patterns
231
126
  */
232
127
  function analyzeTaskPatterns(content) {
233
- // Find Task() calls
234
128
  const taskCalls = content.match(/Task\s*\([^)]+\)/g) || [];
235
129
  const taskCallCount = taskCalls.length;
236
- // Detect sequential patterns (Task calls on consecutive lines without batching)
237
- const lines = content.split('\n');
238
- let sequentialCalls = 0;
239
- let consecutiveTaskLines = 0;
240
- for (const line of lines) {
241
- if (line.includes('Task(') || line.includes('Task (')) {
242
- consecutiveTaskLines++;
243
- }
244
- else if (consecutiveTaskLines > 0) {
245
- if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
246
- sequentialCalls += consecutiveTaskLines;
247
- }
248
- consecutiveTaskLines = 0;
249
- }
250
- }
251
- // Check for final sequence
252
- if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
253
- sequentialCalls += consecutiveTaskLines;
254
- }
130
+ const sequentialCalls = countSequentialTaskCalls(content);
255
131
  const canBatch = sequentialCalls >= THRESHOLDS.sequentialTaskThreshold;
256
- // Estimate savings from batching
257
- // Batching reduces context overhead by ~30-50%
258
- const batchSavingsPercent = canBatch ? Math.min(50, sequentialCalls * 10) : 0;
132
+ const batchSavingsPercent = calculateBatchSavings(sequentialCalls);
259
133
  return {
260
134
  taskCallCount,
261
135
  sequentialCalls,
@@ -274,33 +148,8 @@ function findExtractableSections(sections, totalLines) {
274
148
  if (lineCount < THRESHOLDS.minSectionLines) {
275
149
  continue;
276
150
  }
277
- // Calculate priority based on size relative to total
278
- const sizeRatio = lineCount / totalLines;
279
- let priority = 3;
280
- if (sizeRatio > 0.3) {
281
- priority = 1;
282
- }
283
- else if (sizeRatio > 0.15) {
284
- priority = 2;
285
- }
286
- // Determine reason for extraction
287
- let reason = '';
288
- const lowerName = section.name.toLowerCase();
289
- if (lowerName.includes('api') || lowerName.includes('reference')) {
290
- reason = 'API reference sections can be loaded on-demand';
291
- }
292
- else if (lowerName.includes('example') || lowerName.includes('usage')) {
293
- reason = 'Examples can be progressively disclosed';
294
- }
295
- else if (lowerName.includes('advanced') || lowerName.includes('configuration')) {
296
- reason = 'Advanced topics are rarely needed in initial context';
297
- }
298
- else if (lineCount > 100) {
299
- reason = 'Large section suitable for sub-skill extraction';
300
- }
301
- else {
302
- reason = 'Section size suggests separate loading benefit';
303
- }
151
+ const priority = calculateExtractionPriority(lineCount, totalLines);
152
+ const reason = getExtractionReason(section.name, lineCount);
304
153
  extractable.push({
305
154
  name: section.name,
306
155
  startLine: section.startLine,
@@ -316,7 +165,7 @@ function findExtractableSections(sections, totalLines) {
316
165
  /**
317
166
  * Generate optimization recommendations
318
167
  */
319
- function generateRecommendations(lineCount, mainContentLines, examplesLines, toolUsage, taskPatterns, extractableSections) {
168
+ function generateRecommendations(lineCount, examplesLines, toolUsage, taskPatterns, extractableSections) {
320
169
  const recommendations = [];
321
170
  // Recommend decomposition for large skills
322
171
  if (lineCount > THRESHOLDS.maxLinesBeforeDecompose) {
@@ -1 +1 @@
1
- {"version":3,"file":"SkillAnalyzer.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SkillAnalyzer.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.ts"],"names":[],"mappings":"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"}