@skillsmith/core 0.4.1 → 0.4.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 (370) 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 +17 -131
  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 +35 -0
  59. package/dist/src/api/utils.d.ts.map +1 -0
  60. package/dist/src/api/utils.js +86 -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 +10 -54
  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/integration/neural/neural-fixtures.d.ts +19 -0
  351. package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
  352. package/dist/tests/integration/neural/neural-fixtures.js +49 -0
  353. package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
  354. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
  355. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
  356. package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
  357. package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
  358. package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
  359. package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
  360. package/dist/tests/integration/neural/neural-mocks.js +288 -0
  361. package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
  362. package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
  363. package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
  364. package/dist/tests/integration/neural/neural-test-utils.js +35 -0
  365. package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
  366. package/dist/tests/integration/neural/setup.d.ts +6 -165
  367. package/dist/tests/integration/neural/setup.d.ts.map +1 -1
  368. package/dist/tests/integration/neural/setup.js +9 -477
  369. package/dist/tests/integration/neural/setup.js.map +1 -1
  370. package/package.json +4 -4
@@ -0,0 +1,110 @@
1
+ /**
2
+ * SMI-1788: SkillAnalyzer Types
3
+ *
4
+ * Type definitions for skill analysis and optimization detection.
5
+ * Used by the Skillsmith Optimization Layer for transforming
6
+ * community skills into more performant versions.
7
+ */
8
+ /**
9
+ * Analysis result for a skill's optimization potential
10
+ */
11
+ export interface SkillAnalysis {
12
+ /** Total line count of the skill content */
13
+ lineCount: number;
14
+ /** Number of lines in the main content (excluding examples) */
15
+ mainContentLines: number;
16
+ /** Number of lines in examples section */
17
+ examplesLines: number;
18
+ /** Tools detected in the skill content */
19
+ toolUsage: ToolUsageAnalysis;
20
+ /** Task() call patterns detected */
21
+ taskPatterns: TaskPatternAnalysis;
22
+ /** Sections that could be extracted as sub-skills */
23
+ extractableSections: ExtractableSection[];
24
+ /** Recommended optimizations to apply */
25
+ recommendations: OptimizationRecommendation[];
26
+ /** Overall optimization score (0-100) */
27
+ optimizationScore: number;
28
+ /** Whether this skill would benefit from transformation */
29
+ shouldTransform: boolean;
30
+ }
31
+ /**
32
+ * Tool usage analysis result
33
+ */
34
+ export interface ToolUsageAnalysis {
35
+ /** List of detected tools */
36
+ detectedTools: string[];
37
+ /** Number of Bash commands detected */
38
+ bashCommandCount: number;
39
+ /** Number of file reads detected (Read/Glob/Grep) */
40
+ fileReadCount: number;
41
+ /** Number of file writes detected (Write/Edit) */
42
+ fileWriteCount: number;
43
+ /** Whether heavy tool usage suggests subagent */
44
+ suggestsSubagent: boolean;
45
+ /** Confidence in tool detection */
46
+ confidence: 'high' | 'medium' | 'low';
47
+ }
48
+ /**
49
+ * Task() call pattern analysis
50
+ */
51
+ export interface TaskPatternAnalysis {
52
+ /** Total number of Task() calls detected */
53
+ taskCallCount: number;
54
+ /** Number of sequential Task() calls that could be parallelized */
55
+ sequentialCalls: number;
56
+ /** Whether Task() calls can be batched */
57
+ canBatch: boolean;
58
+ /** Estimated token savings from batching (percentage) */
59
+ batchSavingsPercent: number;
60
+ }
61
+ /**
62
+ * Section that could be extracted as a sub-skill
63
+ */
64
+ export interface ExtractableSection {
65
+ /** Section name/title */
66
+ name: string;
67
+ /** Start line number */
68
+ startLine: number;
69
+ /** End line number */
70
+ endLine: number;
71
+ /** Number of lines */
72
+ lineCount: number;
73
+ /** Extraction priority (1 = highest) */
74
+ priority: number;
75
+ /** Reason for extraction recommendation */
76
+ reason: string;
77
+ }
78
+ /**
79
+ * Optimization recommendation
80
+ */
81
+ export interface OptimizationRecommendation {
82
+ /** Recommendation type */
83
+ type: 'decompose' | 'parallelize' | 'subagent' | 'progressive-disclosure';
84
+ /** Human-readable description */
85
+ description: string;
86
+ /** Estimated token savings (percentage) */
87
+ estimatedSavings: number;
88
+ /** Priority (1 = highest) */
89
+ priority: number;
90
+ /** Affected sections or patterns */
91
+ affectedAreas: string[];
92
+ }
93
+ /**
94
+ * Parsed section from skill content
95
+ */
96
+ export interface ParsedSection {
97
+ /** Section name/title */
98
+ name: string;
99
+ /** Start line number */
100
+ startLine: number;
101
+ /** End line number */
102
+ endLine: number;
103
+ /** Full section content */
104
+ content: string;
105
+ }
106
+ /**
107
+ * Confidence level type
108
+ */
109
+ export type ConfidenceLevel = 'high' | 'medium' | 'low';
110
+ //# sourceMappingURL=SkillAnalyzer.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillAnalyzer.types.d.ts","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;IAEjB,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAA;IAExB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAA;IAErB,0CAA0C;IAC1C,SAAS,EAAE,iBAAiB,CAAA;IAE5B,oCAAoC;IACpC,YAAY,EAAE,mBAAmB,CAAA;IAEjC,qDAAqD;IACrD,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;IAEzC,yCAAyC;IACzC,eAAe,EAAE,0BAA0B,EAAE,CAAA;IAE7C,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAA;IAEzB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAA;IAEvB,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAA;IAExB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAA;IAErB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAA;IAEtB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAA;IAEzB,mCAAmC;IACnC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IAErB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAA;IAEvB,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAA;IAEjB,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IAEZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IAEjB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IAEf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAA;IAEjB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAA;IAEhB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,wBAAwB,CAAA;IAEzE,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IAEnB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;IAExB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAEhB,oCAAoC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IAEZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IAEjB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IAEf,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SMI-1788: SkillAnalyzer Types
3
+ *
4
+ * Type definitions for skill analysis and optimization detection.
5
+ * Used by the Skillsmith Optimization Layer for transforming
6
+ * community skills into more performant versions.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=SkillAnalyzer.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillAnalyzer.types.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * SMI-XXX: SkillDecomposer - Decompose large skills into sub-skills
2
+ * SMI-1788: SkillDecomposer - Decompose large skills into sub-skills
3
3
  *
4
4
  * Transforms skills >500 lines into a main SKILL.md + sub-skills structure
5
5
  * following the Skillsmith optimization standard:
@@ -10,75 +10,9 @@
10
10
  * community skills into more performant versions.
11
11
  */
12
12
  import type { SkillAnalysis } from './SkillAnalyzer.js';
13
- /**
14
- * Result of skill decomposition
15
- */
16
- export interface DecompositionResult {
17
- /** The optimized main SKILL.md content */
18
- mainSkill: DecomposedSkill;
19
- /** Extracted sub-skills */
20
- subSkills: SubSkill[];
21
- /** Whether decomposition was applied */
22
- wasDecomposed: boolean;
23
- /** Statistics about the decomposition */
24
- stats: DecompositionStats;
25
- }
26
- /**
27
- * The main skill after decomposition
28
- */
29
- export interface DecomposedSkill {
30
- /** Filename (always SKILL.md) */
31
- filename: string;
32
- /** The optimized content */
33
- content: string;
34
- /** Line count after optimization */
35
- lineCount: number;
36
- /** References to sub-skills */
37
- subSkillRefs: string[];
38
- }
39
- /**
40
- * An extracted sub-skill
41
- */
42
- export interface SubSkill {
43
- /** Filename (e.g., api.md, examples.md) */
44
- filename: string;
45
- /** Original section name */
46
- sectionName: string;
47
- /** The extracted content */
48
- content: string;
49
- /** Line count */
50
- lineCount: number;
51
- /** Why this section was extracted */
52
- extractionReason: string;
53
- }
54
- /**
55
- * Statistics about the decomposition
56
- */
57
- export interface DecompositionStats {
58
- /** Original line count */
59
- originalLines: number;
60
- /** Main skill line count after decomposition */
61
- mainSkillLines: number;
62
- /** Total lines in sub-skills */
63
- subSkillLines: number;
64
- /** Number of sub-skills created */
65
- subSkillCount: number;
66
- /** Estimated token reduction percentage */
67
- tokenReductionPercent: number;
68
- }
69
- /**
70
- * Configuration for decomposition behavior
71
- */
72
- export interface DecomposerOptions {
73
- /** Maximum lines for main skill (default: 400) */
74
- maxMainSkillLines?: number;
75
- /** Minimum lines for a section to be extracted (default: 50) */
76
- minExtractableLines?: number;
77
- /** Whether to add navigation links to main skill (default: true) */
78
- addNavigation?: boolean;
79
- /** Whether to add "Optimized by Skillsmith" attribution (default: true) */
80
- addAttribution?: boolean;
81
- }
13
+ export type { DecompositionResult, DecomposedSkill, SubSkill, DecompositionStats, SkillMetadata, DecomposerOptions, } from './SkillDecomposer.types.js';
14
+ import type { DecompositionResult, DecomposerOptions } from './SkillDecomposer.types.js';
15
+ export { DEFAULT_EXTRACT_KEYWORDS, sanitizeFilename } from './SkillDecomposer.helpers.js';
82
16
  /**
83
17
  * Decompose a skill into main + sub-skills based on analysis
84
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SkillDecomposer.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,SAAS,EAAE,eAAe,CAAA;IAE1B,2BAA2B;IAC3B,SAAS,EAAE,QAAQ,EAAE,CAAA;IAErB,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAA;IAEtB,yCAAyC;IACzC,KAAK,EAAE,kBAAkB,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IAEjB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAEhB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IAEnB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IAErB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAA;IAEtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAA;IAErB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAA;IAErB,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAWD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,oEAAoE;IACpE,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AASD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CAoCrB;AAuUD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2C5D;;;;;AAcD,wBAAuD"}
1
+ {"version":3,"file":"SkillDecomposer.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGvD,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAexF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAEzF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CA6BrB;AAoCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2C5D;;;;;AAED,wBAAuD"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * SMI-1788: SkillDecomposer Helpers
3
+ *
4
+ * Helper functions and constants for skill decomposition.
5
+ */
6
+ import type { DecomposerOptions, ResolvedDecomposerOptions, SkillMetadata, ParsedSection, SubSkill, DecomposedSkill, DecompositionStats } from './SkillDecomposer.types.js';
7
+ import type { ExtractableSection } from './SkillAnalyzer.types.js';
8
+ /**
9
+ * Default keywords that indicate a section should be extracted as a sub-skill.
10
+ * These are used when no custom extractKeywords are provided.
11
+ */
12
+ export declare const DEFAULT_EXTRACT_KEYWORDS: string[];
13
+ /**
14
+ * Default decomposer options
15
+ */
16
+ export declare const DEFAULT_OPTIONS: ResolvedDecomposerOptions;
17
+ /**
18
+ * Merge user options with defaults
19
+ */
20
+ export declare function resolveOptions(options?: DecomposerOptions): ResolvedDecomposerOptions;
21
+ /**
22
+ * Parse skill content into metadata, frontmatter, and sections
23
+ */
24
+ export declare function parseSkillContent(content: string): {
25
+ metadata: SkillMetadata;
26
+ frontmatter: string;
27
+ sections: ParsedSection[];
28
+ };
29
+ /**
30
+ * Determine which sections should be extracted as sub-skills
31
+ */
32
+ export declare function determineSectionsToExtract(sections: ParsedSection[], extractableSections: ExtractableSection[], opts: ResolvedDecomposerOptions): ParsedSection[];
33
+ /**
34
+ * SMI-1794: Sanitize and validate filename for sub-skill
35
+ * Prevents path traversal and invalid characters
36
+ */
37
+ export declare function sanitizeFilename(name: string): string;
38
+ /**
39
+ * Generate a filename for a sub-skill
40
+ * SMI-1794: Uses sanitized filename to prevent security issues
41
+ */
42
+ export declare function generateSubSkillFilename(sectionTitle: string): string;
43
+ /**
44
+ * Format sub-skill content with proper header
45
+ */
46
+ export declare function formatSubSkillContent(section: ParsedSection, skillName: string): string;
47
+ /**
48
+ * Create sub-skills from extracted sections
49
+ */
50
+ export declare function createSubSkills(sections: ParsedSection[], skillName: string): SubSkill[];
51
+ /**
52
+ * Generate navigation section linking to sub-skills
53
+ */
54
+ export declare function generateSubSkillNavigation(subSkills: SubSkill[]): string;
55
+ /**
56
+ * Generate attribution footer
57
+ */
58
+ export declare function generateAttribution(): string;
59
+ /**
60
+ * Add attribution to content without decomposition
61
+ */
62
+ export declare function addAttributionToContent(content: string): string;
63
+ /**
64
+ * Create the main skill content with remaining sections
65
+ */
66
+ export declare function createMainSkill(frontmatter: string, allSections: ParsedSection[], extractedSections: ParsedSection[], subSkills: SubSkill[], opts: ResolvedDecomposerOptions): DecomposedSkill;
67
+ /**
68
+ * Calculate decomposition statistics
69
+ */
70
+ export declare function calculateStats(originalContent: string, mainSkill: DecomposedSkill, subSkills: SubSkill[]): DecompositionStats;
71
+ /**
72
+ * Format multiple Task() calls as a batched operation
73
+ */
74
+ export declare function formatBatchedTasks(tasks: string[]): string[];
75
+ //# sourceMappingURL=SkillDecomposer.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillDecomposer.helpers.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UASpC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,yBAM7B,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,yBAAyB,CAErF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAClD,QAAQ,EAAE,aAAa,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B,CAuEA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,EAAE,EACzB,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,EAAE,yBAAyB,GAC9B,aAAa,EAAE,CAiCjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAUxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,aAAa,EAAE,EAC5B,iBAAiB,EAAE,aAAa,EAAE,EAClC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,yBAAyB,GAC9B,eAAe,CA2BjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,QAAQ,EAAE,GACpB,kBAAkB,CAkBpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO5D"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * SMI-1788: SkillDecomposer Helpers
3
+ *
4
+ * Helper functions and constants for skill decomposition.
5
+ */
6
+ /**
7
+ * Default keywords that indicate a section should be extracted as a sub-skill.
8
+ * These are used when no custom extractKeywords are provided.
9
+ */
10
+ export const DEFAULT_EXTRACT_KEYWORDS = [
11
+ 'api',
12
+ 'reference',
13
+ 'example',
14
+ 'usage',
15
+ 'advanced',
16
+ 'configuration',
17
+ 'troubleshoot',
18
+ 'appendix',
19
+ ];
20
+ /**
21
+ * Default decomposer options
22
+ */
23
+ export const DEFAULT_OPTIONS = {
24
+ maxMainSkillLines: 400,
25
+ minExtractableLines: 50,
26
+ addNavigation: true,
27
+ addAttribution: true,
28
+ extractKeywords: DEFAULT_EXTRACT_KEYWORDS,
29
+ };
30
+ /**
31
+ * Merge user options with defaults
32
+ */
33
+ export function resolveOptions(options) {
34
+ return { ...DEFAULT_OPTIONS, ...options };
35
+ }
36
+ /**
37
+ * Parse skill content into metadata, frontmatter, and sections
38
+ */
39
+ export function parseSkillContent(content) {
40
+ const lines = content.split('\n');
41
+ let frontmatter = '';
42
+ let contentStart = 0;
43
+ const metadata = {};
44
+ // Extract frontmatter
45
+ if (lines[0]?.trim() === '---') {
46
+ let frontmatterEnd = -1;
47
+ for (let i = 1; i < lines.length; i++) {
48
+ if (lines[i]?.trim() === '---') {
49
+ frontmatterEnd = i;
50
+ break;
51
+ }
52
+ }
53
+ if (frontmatterEnd > 0) {
54
+ frontmatter = lines.slice(0, frontmatterEnd + 1).join('\n');
55
+ contentStart = frontmatterEnd + 1;
56
+ // Parse metadata from frontmatter
57
+ const yamlContent = lines.slice(1, frontmatterEnd).join('\n');
58
+ const nameMatch = yamlContent.match(/^name:\s*(.+)$/m);
59
+ const descMatch = yamlContent.match(/^description:\s*(.+)$/m);
60
+ if (nameMatch)
61
+ metadata.name = nameMatch[1].trim();
62
+ if (descMatch)
63
+ metadata.description = descMatch[1].trim();
64
+ }
65
+ }
66
+ // Parse sections
67
+ const sections = [];
68
+ let currentSection = null;
69
+ for (let i = contentStart; i < lines.length; i++) {
70
+ const line = lines[i];
71
+ const headerMatch = line.match(/^(#{1,3})\s+(.+)$/);
72
+ if (headerMatch) {
73
+ // Save previous section
74
+ if (currentSection) {
75
+ sections.push(currentSection);
76
+ }
77
+ currentSection = {
78
+ level: headerMatch[1].length,
79
+ title: headerMatch[2].trim(),
80
+ startLine: i,
81
+ lines: [line],
82
+ };
83
+ }
84
+ else if (currentSection) {
85
+ currentSection.lines.push(line);
86
+ }
87
+ else {
88
+ // Content before first header
89
+ if (!sections.length && line.trim()) {
90
+ currentSection = {
91
+ level: 0,
92
+ title: '_preamble',
93
+ startLine: i,
94
+ lines: [line],
95
+ };
96
+ }
97
+ }
98
+ }
99
+ // Save last section
100
+ if (currentSection) {
101
+ sections.push(currentSection);
102
+ }
103
+ return { metadata, frontmatter, sections };
104
+ }
105
+ /**
106
+ * Determine which sections should be extracted as sub-skills
107
+ */
108
+ export function determineSectionsToExtract(sections, extractableSections, opts) {
109
+ const toExtract = [];
110
+ // Create a map of section names from analysis for quick lookup
111
+ const extractableNames = new Set(extractableSections.map((s) => s.name.toLowerCase()));
112
+ // Use configurable keywords (defaults provided via DEFAULT_OPTIONS)
113
+ const keywords = opts.extractKeywords ?? DEFAULT_EXTRACT_KEYWORDS;
114
+ for (const section of sections) {
115
+ const lineCount = section.lines.length;
116
+ const titleLower = section.title.toLowerCase();
117
+ // Skip preamble and very short sections
118
+ if (section.title === '_preamble' || lineCount < opts.minExtractableLines) {
119
+ continue;
120
+ }
121
+ // Extract if:
122
+ // 1. In analysis extractable list
123
+ // 2. Has extract keyword in title
124
+ // 3. Is a large section (>100 lines)
125
+ const shouldExtract = extractableNames.has(titleLower) ||
126
+ keywords.some((kw) => titleLower.includes(kw)) ||
127
+ lineCount > 100;
128
+ if (shouldExtract) {
129
+ toExtract.push(section);
130
+ }
131
+ }
132
+ return toExtract;
133
+ }
134
+ /**
135
+ * SMI-1794: Sanitize and validate filename for sub-skill
136
+ * Prevents path traversal and invalid characters
137
+ */
138
+ export function sanitizeFilename(name) {
139
+ return (name
140
+ .toLowerCase()
141
+ .replace(/[^a-z0-9-_]/g, '-') // Only allow alphanumeric, dash, underscore
142
+ .replace(/-+/g, '-') // Collapse multiple dashes
143
+ .replace(/^-|-$/g, '') // Remove leading/trailing dashes
144
+ .slice(0, 64) || 'sub-skill'); // Limit length, provide default
145
+ }
146
+ /**
147
+ * Generate a filename for a sub-skill
148
+ * SMI-1794: Uses sanitized filename to prevent security issues
149
+ */
150
+ export function generateSubSkillFilename(sectionTitle) {
151
+ const slug = sanitizeFilename(sectionTitle);
152
+ return `${slug}.md`;
153
+ }
154
+ /**
155
+ * Format sub-skill content with proper header
156
+ */
157
+ export function formatSubSkillContent(section, skillName) {
158
+ const header = `---
159
+ parent_skill: ${skillName}
160
+ section: ${section.title}
161
+ ---
162
+
163
+ `;
164
+ return header + section.lines.join('\n');
165
+ }
166
+ /**
167
+ * Create sub-skills from extracted sections
168
+ */
169
+ export function createSubSkills(sections, skillName) {
170
+ return sections.map((section) => {
171
+ const filename = generateSubSkillFilename(section.title);
172
+ const content = formatSubSkillContent(section, skillName);
173
+ // Determine extraction reason
174
+ const titleLower = section.title.toLowerCase();
175
+ let reason = 'Large section suitable for on-demand loading';
176
+ if (titleLower.includes('api') || titleLower.includes('reference')) {
177
+ reason = 'API reference loaded on-demand to reduce initial context';
178
+ }
179
+ else if (titleLower.includes('example') || titleLower.includes('usage')) {
180
+ reason = 'Examples progressively disclosed when needed';
181
+ }
182
+ else if (titleLower.includes('advanced') || titleLower.includes('configuration')) {
183
+ reason = 'Advanced content loaded only when required';
184
+ }
185
+ return {
186
+ filename,
187
+ sectionName: section.title,
188
+ content,
189
+ lineCount: content.split('\n').length,
190
+ extractionReason: reason,
191
+ };
192
+ });
193
+ }
194
+ /**
195
+ * Generate navigation section linking to sub-skills
196
+ */
197
+ export function generateSubSkillNavigation(subSkills) {
198
+ const links = subSkills.map((s) => `- [${s.sectionName}](./${s.filename})`).join('\n');
199
+ return `## Additional Resources
200
+
201
+ The following sections are available as sub-skills for on-demand loading:
202
+
203
+ ${links}
204
+
205
+ *Load these sections only when needed to optimize context usage.*`;
206
+ }
207
+ /**
208
+ * Generate attribution footer
209
+ */
210
+ export function generateAttribution() {
211
+ return `---
212
+
213
+ *Optimized by Skillsmith - Token usage reduced through intelligent decomposition*`;
214
+ }
215
+ /**
216
+ * Add attribution to content without decomposition
217
+ */
218
+ export function addAttributionToContent(content) {
219
+ return content.trimEnd() + '\n\n' + generateAttribution();
220
+ }
221
+ /**
222
+ * Create the main skill content with remaining sections
223
+ */
224
+ export function createMainSkill(frontmatter, allSections, extractedSections, subSkills, opts) {
225
+ const extractedTitles = new Set(extractedSections.map((s) => s.title));
226
+ // Build main content from non-extracted sections
227
+ const remainingSections = allSections.filter((s) => !extractedTitles.has(s.title));
228
+ let mainContent = remainingSections.map((s) => s.lines.join('\n')).join('\n\n');
229
+ // Add navigation to sub-skills if enabled
230
+ if (opts.addNavigation && subSkills.length > 0) {
231
+ const nav = generateSubSkillNavigation(subSkills);
232
+ mainContent = mainContent + '\n\n' + nav;
233
+ }
234
+ // Add attribution if enabled
235
+ if (opts.addAttribution) {
236
+ mainContent = mainContent + '\n\n' + generateAttribution();
237
+ }
238
+ // Combine frontmatter and content
239
+ const finalContent = frontmatter ? frontmatter + '\n\n' + mainContent : mainContent;
240
+ return {
241
+ filename: 'SKILL.md',
242
+ content: finalContent.trim(),
243
+ lineCount: finalContent.split('\n').length,
244
+ subSkillRefs: subSkills.map((s) => s.filename),
245
+ };
246
+ }
247
+ /**
248
+ * Calculate decomposition statistics
249
+ */
250
+ export function calculateStats(originalContent, mainSkill, subSkills) {
251
+ const originalLines = originalContent.split('\n').length;
252
+ const mainSkillLines = mainSkill.lineCount;
253
+ const subSkillLines = subSkills.reduce((sum, s) => sum + s.lineCount, 0);
254
+ // Estimate token reduction
255
+ // Main skill is always loaded; sub-skills are loaded on-demand
256
+ // Assume 50% of sub-skill content would have been needed on average
257
+ const effectiveReduction = subSkillLines * 0.5;
258
+ const tokenReductionPercent = Math.round((effectiveReduction / originalLines) * 100);
259
+ return {
260
+ originalLines,
261
+ mainSkillLines,
262
+ subSkillLines,
263
+ subSkillCount: subSkills.length,
264
+ tokenReductionPercent,
265
+ };
266
+ }
267
+ /**
268
+ * Format multiple Task() calls as a batched operation
269
+ */
270
+ export function formatBatchedTasks(tasks) {
271
+ if (tasks.length < 2) {
272
+ return tasks;
273
+ }
274
+ // Add comment about batching
275
+ return ['// Batched for parallel execution (Skillsmith optimization)', ...tasks];
276
+ }
277
+ //# sourceMappingURL=SkillDecomposer.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillDecomposer.helpers.js","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.helpers.ts"],"names":[],"mappings":"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"}