@skillsmith/cli 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli.js +44039 -0
  4. package/package.json +21 -11
  5. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts +0 -20
  6. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts.map +0 -1
  7. package/dist/src/commands/__meta__/telemetry-coverage.test.js +0 -118
  8. package/dist/src/commands/__meta__/telemetry-coverage.test.js.map +0 -1
  9. package/dist/src/commands/ab-test.d.ts +0 -29
  10. package/dist/src/commands/ab-test.d.ts.map +0 -1
  11. package/dist/src/commands/ab-test.js +0 -226
  12. package/dist/src/commands/ab-test.js.map +0 -1
  13. package/dist/src/commands/ab-test.test.d.ts +0 -7
  14. package/dist/src/commands/ab-test.test.d.ts.map +0 -1
  15. package/dist/src/commands/ab-test.test.js +0 -255
  16. package/dist/src/commands/ab-test.test.js.map +0 -1
  17. package/dist/src/commands/analyze.d.ts +0 -14
  18. package/dist/src/commands/analyze.d.ts.map +0 -1
  19. package/dist/src/commands/analyze.js +0 -191
  20. package/dist/src/commands/analyze.js.map +0 -1
  21. package/dist/src/commands/audit-collisions.d.ts +0 -68
  22. package/dist/src/commands/audit-collisions.d.ts.map +0 -1
  23. package/dist/src/commands/audit-collisions.js +0 -309
  24. package/dist/src/commands/audit-collisions.js.map +0 -1
  25. package/dist/src/commands/audit-sources.action.d.ts +0 -37
  26. package/dist/src/commands/audit-sources.action.d.ts.map +0 -1
  27. package/dist/src/commands/audit-sources.action.js +0 -321
  28. package/dist/src/commands/audit-sources.action.js.map +0 -1
  29. package/dist/src/commands/audit-sources.d.ts +0 -37
  30. package/dist/src/commands/audit-sources.d.ts.map +0 -1
  31. package/dist/src/commands/audit-sources.js +0 -55
  32. package/dist/src/commands/audit-sources.js.map +0 -1
  33. package/dist/src/commands/audit-sources.test.d.ts +0 -9
  34. package/dist/src/commands/audit-sources.test.d.ts.map +0 -1
  35. package/dist/src/commands/audit-sources.test.js +0 -228
  36. package/dist/src/commands/audit-sources.test.js.map +0 -1
  37. package/dist/src/commands/audit.d.ts +0 -40
  38. package/dist/src/commands/audit.d.ts.map +0 -1
  39. package/dist/src/commands/audit.js +0 -223
  40. package/dist/src/commands/audit.js.map +0 -1
  41. package/dist/src/commands/audit.test.d.ts +0 -8
  42. package/dist/src/commands/audit.test.d.ts.map +0 -1
  43. package/dist/src/commands/audit.test.js +0 -97
  44. package/dist/src/commands/audit.test.js.map +0 -1
  45. package/dist/src/commands/author/index.d.ts +0 -17
  46. package/dist/src/commands/author/index.d.ts.map +0 -1
  47. package/dist/src/commands/author/index.js +0 -21
  48. package/dist/src/commands/author/index.js.map +0 -1
  49. package/dist/src/commands/author/init.action.d.ts +0 -29
  50. package/dist/src/commands/author/init.action.d.ts.map +0 -1
  51. package/dist/src/commands/author/init.action.js +0 -131
  52. package/dist/src/commands/author/init.action.js.map +0 -1
  53. package/dist/src/commands/author/init.d.ts +0 -36
  54. package/dist/src/commands/author/init.d.ts.map +0 -1
  55. package/dist/src/commands/author/init.helpers.d.ts +0 -80
  56. package/dist/src/commands/author/init.helpers.d.ts.map +0 -1
  57. package/dist/src/commands/author/init.helpers.js +0 -107
  58. package/dist/src/commands/author/init.helpers.js.map +0 -1
  59. package/dist/src/commands/author/init.js +0 -320
  60. package/dist/src/commands/author/init.js.map +0 -1
  61. package/dist/src/commands/author/mcp-init.d.ts +0 -21
  62. package/dist/src/commands/author/mcp-init.d.ts.map +0 -1
  63. package/dist/src/commands/author/mcp-init.js +0 -202
  64. package/dist/src/commands/author/mcp-init.js.map +0 -1
  65. package/dist/src/commands/author/subagent.d.ts +0 -23
  66. package/dist/src/commands/author/subagent.d.ts.map +0 -1
  67. package/dist/src/commands/author/subagent.js +0 -174
  68. package/dist/src/commands/author/subagent.js.map +0 -1
  69. package/dist/src/commands/author/transform.d.ts +0 -23
  70. package/dist/src/commands/author/transform.d.ts.map +0 -1
  71. package/dist/src/commands/author/transform.js +0 -149
  72. package/dist/src/commands/author/transform.js.map +0 -1
  73. package/dist/src/commands/author/utils.d.ts +0 -27
  74. package/dist/src/commands/author/utils.d.ts.map +0 -1
  75. package/dist/src/commands/author/utils.js +0 -118
  76. package/dist/src/commands/author/utils.js.map +0 -1
  77. package/dist/src/commands/config.d.ts +0 -57
  78. package/dist/src/commands/config.d.ts.map +0 -1
  79. package/dist/src/commands/config.js +0 -226
  80. package/dist/src/commands/config.js.map +0 -1
  81. package/dist/src/commands/create.d.ts +0 -43
  82. package/dist/src/commands/create.d.ts.map +0 -1
  83. package/dist/src/commands/create.js +0 -336
  84. package/dist/src/commands/create.js.map +0 -1
  85. package/dist/src/commands/diff.d.ts +0 -21
  86. package/dist/src/commands/diff.d.ts.map +0 -1
  87. package/dist/src/commands/diff.js +0 -227
  88. package/dist/src/commands/diff.js.map +0 -1
  89. package/dist/src/commands/diff.test.d.ts +0 -6
  90. package/dist/src/commands/diff.test.d.ts.map +0 -1
  91. package/dist/src/commands/diff.test.js +0 -327
  92. package/dist/src/commands/diff.test.js.map +0 -1
  93. package/dist/src/commands/import-local.d.ts +0 -28
  94. package/dist/src/commands/import-local.d.ts.map +0 -1
  95. package/dist/src/commands/import-local.helpers.d.ts +0 -28
  96. package/dist/src/commands/import-local.helpers.d.ts.map +0 -1
  97. package/dist/src/commands/import-local.helpers.js +0 -166
  98. package/dist/src/commands/import-local.helpers.js.map +0 -1
  99. package/dist/src/commands/import-local.js +0 -273
  100. package/dist/src/commands/import-local.js.map +0 -1
  101. package/dist/src/commands/import-local.types.d.ts +0 -59
  102. package/dist/src/commands/import-local.types.d.ts.map +0 -1
  103. package/dist/src/commands/import-local.types.js +0 -2
  104. package/dist/src/commands/import-local.types.js.map +0 -1
  105. package/dist/src/commands/import.d.ts +0 -47
  106. package/dist/src/commands/import.d.ts.map +0 -1
  107. package/dist/src/commands/import.js +0 -314
  108. package/dist/src/commands/import.js.map +0 -1
  109. package/dist/src/commands/index.d.ts +0 -28
  110. package/dist/src/commands/index.d.ts.map +0 -1
  111. package/dist/src/commands/index.js +0 -50
  112. package/dist/src/commands/index.js.map +0 -1
  113. package/dist/src/commands/info.d.ts +0 -19
  114. package/dist/src/commands/info.d.ts.map +0 -1
  115. package/dist/src/commands/info.js +0 -110
  116. package/dist/src/commands/info.js.map +0 -1
  117. package/dist/src/commands/install-skill.d.ts +0 -16
  118. package/dist/src/commands/install-skill.d.ts.map +0 -1
  119. package/dist/src/commands/install-skill.js +0 -155
  120. package/dist/src/commands/install-skill.js.map +0 -1
  121. package/dist/src/commands/install.d.ts +0 -34
  122. package/dist/src/commands/install.d.ts.map +0 -1
  123. package/dist/src/commands/install.js +0 -311
  124. package/dist/src/commands/install.js.map +0 -1
  125. package/dist/src/commands/inventory.action.d.ts +0 -55
  126. package/dist/src/commands/inventory.action.d.ts.map +0 -1
  127. package/dist/src/commands/inventory.action.js +0 -179
  128. package/dist/src/commands/inventory.action.js.map +0 -1
  129. package/dist/src/commands/inventory.action.test.d.ts +0 -19
  130. package/dist/src/commands/inventory.action.test.d.ts.map +0 -1
  131. package/dist/src/commands/inventory.action.test.js +0 -371
  132. package/dist/src/commands/inventory.action.test.js.map +0 -1
  133. package/dist/src/commands/inventory.d.ts +0 -21
  134. package/dist/src/commands/inventory.d.ts.map +0 -1
  135. package/dist/src/commands/inventory.js +0 -42
  136. package/dist/src/commands/inventory.js.map +0 -1
  137. package/dist/src/commands/login.d.ts +0 -7
  138. package/dist/src/commands/login.d.ts.map +0 -1
  139. package/dist/src/commands/login.js +0 -323
  140. package/dist/src/commands/login.js.map +0 -1
  141. package/dist/src/commands/login.test-helpers.d.ts +0 -7
  142. package/dist/src/commands/login.test-helpers.d.ts.map +0 -1
  143. package/dist/src/commands/login.test-helpers.js +0 -44
  144. package/dist/src/commands/login.test-helpers.js.map +0 -1
  145. package/dist/src/commands/login.test.d.ts +0 -2
  146. package/dist/src/commands/login.test.d.ts.map +0 -1
  147. package/dist/src/commands/login.test.js +0 -387
  148. package/dist/src/commands/login.test.js.map +0 -1
  149. package/dist/src/commands/logout.d.ts +0 -15
  150. package/dist/src/commands/logout.d.ts.map +0 -1
  151. package/dist/src/commands/logout.js +0 -54
  152. package/dist/src/commands/logout.js.map +0 -1
  153. package/dist/src/commands/logout.test.d.ts +0 -8
  154. package/dist/src/commands/logout.test.d.ts.map +0 -1
  155. package/dist/src/commands/logout.test.js +0 -137
  156. package/dist/src/commands/logout.test.js.map +0 -1
  157. package/dist/src/commands/manage.d.ts +0 -19
  158. package/dist/src/commands/manage.d.ts.map +0 -1
  159. package/dist/src/commands/manage.js +0 -346
  160. package/dist/src/commands/manage.js.map +0 -1
  161. package/dist/src/commands/merge.d.ts +0 -24
  162. package/dist/src/commands/merge.d.ts.map +0 -1
  163. package/dist/src/commands/merge.js +0 -168
  164. package/dist/src/commands/merge.js.map +0 -1
  165. package/dist/src/commands/pin.d.ts +0 -26
  166. package/dist/src/commands/pin.d.ts.map +0 -1
  167. package/dist/src/commands/pin.js +0 -138
  168. package/dist/src/commands/pin.js.map +0 -1
  169. package/dist/src/commands/pin.test.d.ts +0 -6
  170. package/dist/src/commands/pin.test.d.ts.map +0 -1
  171. package/dist/src/commands/pin.test.js +0 -206
  172. package/dist/src/commands/pin.test.js.map +0 -1
  173. package/dist/src/commands/recommend-scoring.d.ts +0 -29
  174. package/dist/src/commands/recommend-scoring.d.ts.map +0 -1
  175. package/dist/src/commands/recommend-scoring.js +0 -141
  176. package/dist/src/commands/recommend-scoring.js.map +0 -1
  177. package/dist/src/commands/recommend.d.ts +0 -15
  178. package/dist/src/commands/recommend.d.ts.map +0 -1
  179. package/dist/src/commands/recommend.helpers.d.ts +0 -44
  180. package/dist/src/commands/recommend.helpers.d.ts.map +0 -1
  181. package/dist/src/commands/recommend.helpers.js +0 -303
  182. package/dist/src/commands/recommend.helpers.js.map +0 -1
  183. package/dist/src/commands/recommend.js +0 -198
  184. package/dist/src/commands/recommend.js.map +0 -1
  185. package/dist/src/commands/recommend.types.d.ts +0 -66
  186. package/dist/src/commands/recommend.types.d.ts.map +0 -1
  187. package/dist/src/commands/recommend.types.js +0 -14
  188. package/dist/src/commands/recommend.types.js.map +0 -1
  189. package/dist/src/commands/run-registry-sync.d.ts +0 -31
  190. package/dist/src/commands/run-registry-sync.d.ts.map +0 -1
  191. package/dist/src/commands/run-registry-sync.js +0 -45
  192. package/dist/src/commands/run-registry-sync.js.map +0 -1
  193. package/dist/src/commands/search-formatters.d.ts +0 -36
  194. package/dist/src/commands/search-formatters.d.ts.map +0 -1
  195. package/dist/src/commands/search-formatters.js +0 -132
  196. package/dist/src/commands/search-formatters.js.map +0 -1
  197. package/dist/src/commands/search-types.d.ts +0 -46
  198. package/dist/src/commands/search-types.d.ts.map +0 -1
  199. package/dist/src/commands/search-types.js +0 -12
  200. package/dist/src/commands/search-types.js.map +0 -1
  201. package/dist/src/commands/search.action.d.ts +0 -16
  202. package/dist/src/commands/search.action.d.ts.map +0 -1
  203. package/dist/src/commands/search.action.js +0 -384
  204. package/dist/src/commands/search.action.js.map +0 -1
  205. package/dist/src/commands/search.d.ts +0 -18
  206. package/dist/src/commands/search.d.ts.map +0 -1
  207. package/dist/src/commands/search.helpers.d.ts +0 -52
  208. package/dist/src/commands/search.helpers.d.ts.map +0 -1
  209. package/dist/src/commands/search.helpers.js +0 -95
  210. package/dist/src/commands/search.helpers.js.map +0 -1
  211. package/dist/src/commands/search.js +0 -48
  212. package/dist/src/commands/search.js.map +0 -1
  213. package/dist/src/commands/search.test.d.ts +0 -10
  214. package/dist/src/commands/search.test.d.ts.map +0 -1
  215. package/dist/src/commands/search.test.js +0 -179
  216. package/dist/src/commands/search.test.js.map +0 -1
  217. package/dist/src/commands/sync.action.d.ts +0 -39
  218. package/dist/src/commands/sync.action.d.ts.map +0 -1
  219. package/dist/src/commands/sync.action.js +0 -353
  220. package/dist/src/commands/sync.action.js.map +0 -1
  221. package/dist/src/commands/sync.d.ts +0 -24
  222. package/dist/src/commands/sync.d.ts.map +0 -1
  223. package/dist/src/commands/sync.helpers.d.ts +0 -55
  224. package/dist/src/commands/sync.helpers.d.ts.map +0 -1
  225. package/dist/src/commands/sync.helpers.js +0 -90
  226. package/dist/src/commands/sync.helpers.js.map +0 -1
  227. package/dist/src/commands/sync.js +0 -101
  228. package/dist/src/commands/sync.js.map +0 -1
  229. package/dist/src/commands/telemetry.action.d.ts +0 -38
  230. package/dist/src/commands/telemetry.action.d.ts.map +0 -1
  231. package/dist/src/commands/telemetry.action.js +0 -350
  232. package/dist/src/commands/telemetry.action.js.map +0 -1
  233. package/dist/src/commands/telemetry.d.ts +0 -30
  234. package/dist/src/commands/telemetry.d.ts.map +0 -1
  235. package/dist/src/commands/telemetry.helpers.d.ts +0 -58
  236. package/dist/src/commands/telemetry.helpers.d.ts.map +0 -1
  237. package/dist/src/commands/telemetry.helpers.js +0 -173
  238. package/dist/src/commands/telemetry.helpers.js.map +0 -1
  239. package/dist/src/commands/telemetry.helpers.test.d.ts +0 -15
  240. package/dist/src/commands/telemetry.helpers.test.d.ts.map +0 -1
  241. package/dist/src/commands/telemetry.helpers.test.js +0 -240
  242. package/dist/src/commands/telemetry.helpers.test.js.map +0 -1
  243. package/dist/src/commands/telemetry.js +0 -65
  244. package/dist/src/commands/telemetry.js.map +0 -1
  245. package/dist/src/commands/telemetry.test.d.ts +0 -18
  246. package/dist/src/commands/telemetry.test.d.ts.map +0 -1
  247. package/dist/src/commands/telemetry.test.js +0 -401
  248. package/dist/src/commands/telemetry.test.js.map +0 -1
  249. package/dist/src/commands/whoami.d.ts +0 -15
  250. package/dist/src/commands/whoami.d.ts.map +0 -1
  251. package/dist/src/commands/whoami.js +0 -55
  252. package/dist/src/commands/whoami.js.map +0 -1
  253. package/dist/src/commands/whoami.test.d.ts +0 -8
  254. package/dist/src/commands/whoami.test.d.ts.map +0 -1
  255. package/dist/src/commands/whoami.test.js +0 -133
  256. package/dist/src/commands/whoami.test.js.map +0 -1
  257. package/dist/src/config.d.ts +0 -29
  258. package/dist/src/config.d.ts.map +0 -1
  259. package/dist/src/config.js +0 -34
  260. package/dist/src/config.js.map +0 -1
  261. package/dist/src/index.d.ts +0 -22
  262. package/dist/src/index.d.ts.map +0 -1
  263. package/dist/src/index.js +0 -117
  264. package/dist/src/index.js.map +0 -1
  265. package/dist/src/templates/changelog.md.template.d.ts +0 -8
  266. package/dist/src/templates/changelog.md.template.d.ts.map +0 -1
  267. package/dist/src/templates/changelog.md.template.js +0 -19
  268. package/dist/src/templates/changelog.md.template.js.map +0 -1
  269. package/dist/src/templates/index.d.ts +0 -11
  270. package/dist/src/templates/index.d.ts.map +0 -1
  271. package/dist/src/templates/index.js +0 -11
  272. package/dist/src/templates/index.js.map +0 -1
  273. package/dist/src/templates/mcp-server.template.d.ts +0 -82
  274. package/dist/src/templates/mcp-server.template.d.ts.map +0 -1
  275. package/dist/src/templates/mcp-server.template.js +0 -430
  276. package/dist/src/templates/mcp-server.template.js.map +0 -1
  277. package/dist/src/templates/mcp-server.template.snippets.d.ts +0 -51
  278. package/dist/src/templates/mcp-server.template.snippets.d.ts.map +0 -1
  279. package/dist/src/templates/mcp-server.template.snippets.js +0 -162
  280. package/dist/src/templates/mcp-server.template.snippets.js.map +0 -1
  281. package/dist/src/templates/mcp-template-handlers.d.ts +0 -33
  282. package/dist/src/templates/mcp-template-handlers.d.ts.map +0 -1
  283. package/dist/src/templates/mcp-template-handlers.js +0 -106
  284. package/dist/src/templates/mcp-template-handlers.js.map +0 -1
  285. package/dist/src/templates/mcp-template-types.d.ts +0 -48
  286. package/dist/src/templates/mcp-template-types.d.ts.map +0 -1
  287. package/dist/src/templates/mcp-template-types.js +0 -18
  288. package/dist/src/templates/mcp-template-types.js.map +0 -1
  289. package/dist/src/templates/readme.md.template.d.ts +0 -8
  290. package/dist/src/templates/readme.md.template.d.ts.map +0 -1
  291. package/dist/src/templates/readme.md.template.js +0 -86
  292. package/dist/src/templates/readme.md.template.js.map +0 -1
  293. package/dist/src/templates/skill.md.template.d.ts +0 -8
  294. package/dist/src/templates/skill.md.template.d.ts.map +0 -1
  295. package/dist/src/templates/skill.md.template.js +0 -97
  296. package/dist/src/templates/skill.md.template.js.map +0 -1
  297. package/dist/src/templates/subagent.md.template.d.ts +0 -38
  298. package/dist/src/templates/subagent.md.template.d.ts.map +0 -1
  299. package/dist/src/templates/subagent.md.template.js +0 -128
  300. package/dist/src/templates/subagent.md.template.js.map +0 -1
  301. package/dist/src/utils/errors.d.ts +0 -52
  302. package/dist/src/utils/errors.d.ts.map +0 -1
  303. package/dist/src/utils/errors.js +0 -58
  304. package/dist/src/utils/errors.js.map +0 -1
  305. package/dist/src/utils/formatters.d.ts +0 -39
  306. package/dist/src/utils/formatters.d.ts.map +0 -1
  307. package/dist/src/utils/formatters.js +0 -69
  308. package/dist/src/utils/formatters.js.map +0 -1
  309. package/dist/src/utils/license-types.d.ts +0 -88
  310. package/dist/src/utils/license-types.d.ts.map +0 -1
  311. package/dist/src/utils/license-types.js +0 -60
  312. package/dist/src/utils/license-types.js.map +0 -1
  313. package/dist/src/utils/license-validation.d.ts +0 -61
  314. package/dist/src/utils/license-validation.d.ts.map +0 -1
  315. package/dist/src/utils/license-validation.js +0 -198
  316. package/dist/src/utils/license-validation.js.map +0 -1
  317. package/dist/src/utils/license.d.ts +0 -56
  318. package/dist/src/utils/license.d.ts.map +0 -1
  319. package/dist/src/utils/license.js +0 -163
  320. package/dist/src/utils/license.js.map +0 -1
  321. package/dist/src/utils/license.test.d.ts +0 -7
  322. package/dist/src/utils/license.test.d.ts.map +0 -1
  323. package/dist/src/utils/license.test.js +0 -308
  324. package/dist/src/utils/license.test.js.map +0 -1
  325. package/dist/src/utils/manifest.d.ts +0 -121
  326. package/dist/src/utils/manifest.d.ts.map +0 -1
  327. package/dist/src/utils/manifest.js +0 -133
  328. package/dist/src/utils/manifest.js.map +0 -1
  329. package/dist/src/utils/manifest.test.d.ts +0 -20
  330. package/dist/src/utils/manifest.test.d.ts.map +0 -1
  331. package/dist/src/utils/manifest.test.js +0 -344
  332. package/dist/src/utils/manifest.test.js.map +0 -1
  333. package/dist/src/utils/node-version.d.ts +0 -41
  334. package/dist/src/utils/node-version.d.ts.map +0 -1
  335. package/dist/src/utils/node-version.js +0 -123
  336. package/dist/src/utils/node-version.js.map +0 -1
  337. package/dist/src/utils/open-database.d.ts +0 -35
  338. package/dist/src/utils/open-database.d.ts.map +0 -1
  339. package/dist/src/utils/open-database.js +0 -73
  340. package/dist/src/utils/open-database.js.map +0 -1
  341. package/dist/src/utils/require-tier.d.ts +0 -38
  342. package/dist/src/utils/require-tier.d.ts.map +0 -1
  343. package/dist/src/utils/require-tier.js +0 -74
  344. package/dist/src/utils/require-tier.js.map +0 -1
  345. package/dist/src/utils/sanitize.d.ts +0 -30
  346. package/dist/src/utils/sanitize.d.ts.map +0 -1
  347. package/dist/src/utils/sanitize.js +0 -45
  348. package/dist/src/utils/sanitize.js.map +0 -1
  349. package/dist/src/utils/skill-name.d.ts +0 -19
  350. package/dist/src/utils/skill-name.d.ts.map +0 -1
  351. package/dist/src/utils/skill-name.js +0 -26
  352. package/dist/src/utils/skill-name.js.map +0 -1
  353. package/dist/src/utils/skills-directory.d.ts +0 -95
  354. package/dist/src/utils/skills-directory.d.ts.map +0 -1
  355. package/dist/src/utils/skills-directory.js +0 -285
  356. package/dist/src/utils/skills-directory.js.map +0 -1
  357. package/dist/src/utils/startup-header-gate.d.ts +0 -29
  358. package/dist/src/utils/startup-header-gate.d.ts.map +0 -1
  359. package/dist/src/utils/startup-header-gate.js +0 -44
  360. package/dist/src/utils/startup-header-gate.js.map +0 -1
  361. package/dist/src/utils/startup-header-gate.test.d.ts +0 -2
  362. package/dist/src/utils/startup-header-gate.test.d.ts.map +0 -1
  363. package/dist/src/utils/startup-header-gate.test.js +0 -46
  364. package/dist/src/utils/startup-header-gate.test.js.map +0 -1
  365. package/dist/src/utils/tool-analyzer.d.ts +0 -54
  366. package/dist/src/utils/tool-analyzer.d.ts.map +0 -1
  367. package/dist/src/utils/tool-analyzer.js +0 -156
  368. package/dist/src/utils/tool-analyzer.js.map +0 -1
  369. package/dist/src/version.d.ts +0 -2
  370. package/dist/src/version.d.ts.map +0 -1
  371. package/dist/src/version.js +0 -24
  372. package/dist/src/version.js.map +0 -1
  373. package/dist/tests/audit-collisions.test.d.ts +0 -42
  374. package/dist/tests/audit-collisions.test.d.ts.map +0 -1
  375. package/dist/tests/audit-collisions.test.js +0 -370
  376. package/dist/tests/audit-collisions.test.js.map +0 -1
  377. package/dist/tests/audit-restructure.test.d.ts +0 -15
  378. package/dist/tests/audit-restructure.test.d.ts.map +0 -1
  379. package/dist/tests/audit-restructure.test.js +0 -151
  380. package/dist/tests/audit-restructure.test.js.map +0 -1
  381. package/dist/tests/author.test.d.ts +0 -5
  382. package/dist/tests/author.test.d.ts.map +0 -1
  383. package/dist/tests/author.test.js +0 -653
  384. package/dist/tests/author.test.js.map +0 -1
  385. package/dist/tests/config.test.d.ts +0 -33
  386. package/dist/tests/config.test.d.ts.map +0 -1
  387. package/dist/tests/config.test.js +0 -240
  388. package/dist/tests/config.test.js.map +0 -1
  389. package/dist/tests/create.test.d.ts +0 -5
  390. package/dist/tests/create.test.d.ts.map +0 -1
  391. package/dist/tests/create.test.js +0 -449
  392. package/dist/tests/create.test.js.map +0 -1
  393. package/dist/tests/e2e/audit-sources-affix.test.d.ts +0 -11
  394. package/dist/tests/e2e/audit-sources-affix.test.d.ts.map +0 -1
  395. package/dist/tests/e2e/audit-sources-affix.test.js +0 -121
  396. package/dist/tests/e2e/audit-sources-affix.test.js.map +0 -1
  397. package/dist/tests/e2e/audit-sources-apply.test.d.ts +0 -13
  398. package/dist/tests/e2e/audit-sources-apply.test.d.ts.map +0 -1
  399. package/dist/tests/e2e/audit-sources-apply.test.js +0 -166
  400. package/dist/tests/e2e/audit-sources-apply.test.js.map +0 -1
  401. package/dist/tests/e2e/audit-sources-recovery.test.d.ts +0 -15
  402. package/dist/tests/e2e/audit-sources-recovery.test.d.ts.map +0 -1
  403. package/dist/tests/e2e/audit-sources-recovery.test.js +0 -179
  404. package/dist/tests/e2e/audit-sources-recovery.test.js.map +0 -1
  405. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts +0 -23
  406. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts.map +0 -1
  407. package/dist/tests/e2e/audit-sources-roundtrip.test.js +0 -139
  408. package/dist/tests/e2e/audit-sources-roundtrip.test.js.map +0 -1
  409. package/dist/tests/e2e/author.e2e.test.d.ts +0 -9
  410. package/dist/tests/e2e/author.e2e.test.d.ts.map +0 -1
  411. package/dist/tests/e2e/author.e2e.test.js +0 -666
  412. package/dist/tests/e2e/author.e2e.test.js.map +0 -1
  413. package/dist/tests/e2e/import.e2e.test.d.ts +0 -10
  414. package/dist/tests/e2e/import.e2e.test.d.ts.map +0 -1
  415. package/dist/tests/e2e/import.e2e.test.js +0 -213
  416. package/dist/tests/e2e/import.e2e.test.js.map +0 -1
  417. package/dist/tests/e2e/manage.e2e.test.d.ts +0 -9
  418. package/dist/tests/e2e/manage.e2e.test.d.ts.map +0 -1
  419. package/dist/tests/e2e/manage.e2e.test.js +0 -277
  420. package/dist/tests/e2e/manage.e2e.test.js.map +0 -1
  421. package/dist/tests/e2e/search.e2e.test.d.ts +0 -10
  422. package/dist/tests/e2e/search.e2e.test.d.ts.map +0 -1
  423. package/dist/tests/e2e/search.e2e.test.js +0 -324
  424. package/dist/tests/e2e/search.e2e.test.js.map +0 -1
  425. package/dist/tests/e2e/test-config.d.ts +0 -39
  426. package/dist/tests/e2e/test-config.d.ts.map +0 -1
  427. package/dist/tests/e2e/test-config.js +0 -44
  428. package/dist/tests/e2e/test-config.js.map +0 -1
  429. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  430. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  431. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  432. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  433. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  434. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  435. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -238
  436. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  437. package/dist/tests/e2e/utils/index.d.ts +0 -12
  438. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  439. package/dist/tests/e2e/utils/index.js +0 -12
  440. package/dist/tests/e2e/utils/index.js.map +0 -1
  441. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  442. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  443. package/dist/tests/e2e/utils/linear-reporter.js +0 -223
  444. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  445. package/dist/tests/e2e/utils/mock-github.d.ts +0 -23
  446. package/dist/tests/e2e/utils/mock-github.d.ts.map +0 -1
  447. package/dist/tests/e2e/utils/mock-github.js +0 -60
  448. package/dist/tests/e2e/utils/mock-github.js.map +0 -1
  449. package/dist/tests/e2e/utils/mock-prompts.d.ts +0 -19
  450. package/dist/tests/e2e/utils/mock-prompts.d.ts.map +0 -1
  451. package/dist/tests/e2e/utils/mock-prompts.js +0 -48
  452. package/dist/tests/e2e/utils/mock-prompts.js.map +0 -1
  453. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts +0 -49
  454. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts.map +0 -1
  455. package/dist/tests/e2e/utils/source-recovery-fixture.js +0 -106
  456. package/dist/tests/e2e/utils/source-recovery-fixture.js.map +0 -1
  457. package/dist/tests/embedding-probe-stdio.test.d.ts +0 -11
  458. package/dist/tests/embedding-probe-stdio.test.d.ts.map +0 -1
  459. package/dist/tests/embedding-probe-stdio.test.js +0 -58
  460. package/dist/tests/embedding-probe-stdio.test.js.map +0 -1
  461. package/dist/tests/import.test.d.ts +0 -5
  462. package/dist/tests/import.test.d.ts.map +0 -1
  463. package/dist/tests/import.test.js +0 -11
  464. package/dist/tests/import.test.js.map +0 -1
  465. package/dist/tests/init.test.d.ts +0 -30
  466. package/dist/tests/init.test.d.ts.map +0 -1
  467. package/dist/tests/init.test.js +0 -357
  468. package/dist/tests/init.test.js.map +0 -1
  469. package/dist/tests/install-multi-client.test.d.ts +0 -2
  470. package/dist/tests/install-multi-client.test.d.ts.map +0 -1
  471. package/dist/tests/install-multi-client.test.js +0 -202
  472. package/dist/tests/install-multi-client.test.js.map +0 -1
  473. package/dist/tests/install-quarantine.test.d.ts +0 -10
  474. package/dist/tests/install-quarantine.test.d.ts.map +0 -1
  475. package/dist/tests/install-quarantine.test.js +0 -86
  476. package/dist/tests/install-quarantine.test.js.map +0 -1
  477. package/dist/tests/install-skill.test.d.ts +0 -8
  478. package/dist/tests/install-skill.test.d.ts.map +0 -1
  479. package/dist/tests/install-skill.test.js +0 -414
  480. package/dist/tests/install-skill.test.js.map +0 -1
  481. package/dist/tests/integration/import-local.test.d.ts +0 -2
  482. package/dist/tests/integration/import-local.test.d.ts.map +0 -1
  483. package/dist/tests/integration/import-local.test.js +0 -158
  484. package/dist/tests/integration/import-local.test.js.map +0 -1
  485. package/dist/tests/license-validation.test.d.ts +0 -8
  486. package/dist/tests/license-validation.test.d.ts.map +0 -1
  487. package/dist/tests/license-validation.test.js +0 -186
  488. package/dist/tests/license-validation.test.js.map +0 -1
  489. package/dist/tests/manage.test.d.ts +0 -5
  490. package/dist/tests/manage.test.d.ts.map +0 -1
  491. package/dist/tests/manage.test.js +0 -495
  492. package/dist/tests/manage.test.js.map +0 -1
  493. package/dist/tests/mcp-server-template.test.d.ts +0 -7
  494. package/dist/tests/mcp-server-template.test.d.ts.map +0 -1
  495. package/dist/tests/mcp-server-template.test.js +0 -372
  496. package/dist/tests/mcp-server-template.test.js.map +0 -1
  497. package/dist/tests/node-version.test.d.ts +0 -8
  498. package/dist/tests/node-version.test.d.ts.map +0 -1
  499. package/dist/tests/node-version.test.js +0 -200
  500. package/dist/tests/node-version.test.js.map +0 -1
  501. package/dist/tests/open-database.test.d.ts +0 -2
  502. package/dist/tests/open-database.test.d.ts.map +0 -1
  503. package/dist/tests/open-database.test.js +0 -77
  504. package/dist/tests/open-database.test.js.map +0 -1
  505. package/dist/tests/recommend-helpers.test.d.ts +0 -9
  506. package/dist/tests/recommend-helpers.test.d.ts.map +0 -1
  507. package/dist/tests/recommend-helpers.test.js +0 -308
  508. package/dist/tests/recommend-helpers.test.js.map +0 -1
  509. package/dist/tests/recommend-scoring.test.d.ts +0 -8
  510. package/dist/tests/recommend-scoring.test.d.ts.map +0 -1
  511. package/dist/tests/recommend-scoring.test.js +0 -184
  512. package/dist/tests/recommend-scoring.test.js.map +0 -1
  513. package/dist/tests/recommend.errors.test.d.ts +0 -8
  514. package/dist/tests/recommend.errors.test.d.ts.map +0 -1
  515. package/dist/tests/recommend.errors.test.js +0 -232
  516. package/dist/tests/recommend.errors.test.js.map +0 -1
  517. package/dist/tests/recommend.filters.test.d.ts +0 -9
  518. package/dist/tests/recommend.filters.test.d.ts.map +0 -1
  519. package/dist/tests/recommend.filters.test.js +0 -235
  520. package/dist/tests/recommend.filters.test.js.map +0 -1
  521. package/dist/tests/recommend.test-helpers.d.ts +0 -66
  522. package/dist/tests/recommend.test-helpers.d.ts.map +0 -1
  523. package/dist/tests/recommend.test-helpers.js +0 -79
  524. package/dist/tests/recommend.test-helpers.js.map +0 -1
  525. package/dist/tests/recommend.test.d.ts +0 -11
  526. package/dist/tests/recommend.test.d.ts.map +0 -1
  527. package/dist/tests/recommend.test.js +0 -320
  528. package/dist/tests/recommend.test.js.map +0 -1
  529. package/dist/tests/search-helpers.test.d.ts +0 -2
  530. package/dist/tests/search-helpers.test.d.ts.map +0 -1
  531. package/dist/tests/search-helpers.test.js +0 -110
  532. package/dist/tests/search-helpers.test.js.map +0 -1
  533. package/dist/tests/search.test.d.ts +0 -5
  534. package/dist/tests/search.test.d.ts.map +0 -1
  535. package/dist/tests/search.test.js +0 -91
  536. package/dist/tests/search.test.js.map +0 -1
  537. package/dist/tests/skills-directory-per-harness.test.d.ts +0 -2
  538. package/dist/tests/skills-directory-per-harness.test.d.ts.map +0 -1
  539. package/dist/tests/skills-directory-per-harness.test.js +0 -116
  540. package/dist/tests/skills-directory-per-harness.test.js.map +0 -1
  541. package/dist/tests/skills-directory.test.d.ts +0 -2
  542. package/dist/tests/skills-directory.test.d.ts.map +0 -1
  543. package/dist/tests/skills-directory.test.js +0 -108
  544. package/dist/tests/skills-directory.test.js.map +0 -1
  545. package/dist/tests/sync.auth-ux.test.d.ts +0 -14
  546. package/dist/tests/sync.auth-ux.test.d.ts.map +0 -1
  547. package/dist/tests/sync.auth-ux.test.js +0 -148
  548. package/dist/tests/sync.auth-ux.test.js.map +0 -1
  549. package/dist/tests/tool-analyzer.test.d.ts +0 -8
  550. package/dist/tests/tool-analyzer.test.d.ts.map +0 -1
  551. package/dist/tests/tool-analyzer.test.js +0 -149
  552. package/dist/tests/tool-analyzer.test.js.map +0 -1
  553. package/dist/tests/unit/commands/install.test.d.ts +0 -7
  554. package/dist/tests/unit/commands/install.test.d.ts.map +0 -1
  555. package/dist/tests/unit/commands/install.test.js +0 -482
  556. package/dist/tests/unit/commands/install.test.js.map +0 -1
  557. package/dist/tests/unit/import-local.helpers.test.d.ts +0 -2
  558. package/dist/tests/unit/import-local.helpers.test.d.ts.map +0 -1
  559. package/dist/tests/unit/import-local.helpers.test.js +0 -96
  560. package/dist/tests/unit/import-local.helpers.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.errors.test.d.ts","sourceRoot":"","sources":["../../tests/recommend.errors.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,232 +0,0 @@
1
- /**
2
- * SMI-1353: CLI recommend command — error handling, limit validation, trust tier.
3
- *
4
- * Sibling of recommend.test.ts and recommend.filters.test.ts; see those files
5
- * for context. Shared mocks/fixtures live in recommend.test-helpers.
6
- */
7
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
- import { createMockCodebaseContext, createMockApiResponse } from './recommend.test-helpers.js';
9
- const mocks = vi.hoisted(() => ({
10
- analyze: vi.fn(),
11
- getRecommendations: vi.fn(),
12
- spinner: {
13
- start: vi.fn().mockReturnThis(),
14
- stop: vi.fn().mockReturnThis(),
15
- succeed: vi.fn().mockReturnThis(),
16
- fail: vi.fn().mockReturnThis(),
17
- warn: vi.fn().mockReturnThis(),
18
- text: '',
19
- },
20
- }));
21
- vi.mock('@skillsmith/core', () => ({
22
- CodebaseAnalyzer: class MockCodebaseAnalyzer {
23
- analyze(...args) {
24
- return mocks.analyze(...args);
25
- }
26
- },
27
- createApiClient: () => ({
28
- getRecommendations: (...args) => mocks.getRecommendations(...args),
29
- }),
30
- // SMI-4474: stub for JWT auto-load (tests don't exercise the JWT path).
31
- loadStoredAccessToken: () => Promise.resolve(null),
32
- SKILL_ROLES: [
33
- 'code-quality',
34
- 'testing',
35
- 'documentation',
36
- 'workflow',
37
- 'security',
38
- 'development-partner',
39
- ],
40
- }));
41
- vi.mock('ora', () => ({ default: () => mocks.spinner }));
42
- const mockAnalyze = mocks.analyze;
43
- const mockGetRecommendations = mocks.getRecommendations;
44
- const mockSpinner = mocks.spinner;
45
- const originalConsoleLog = console.log;
46
- const originalConsoleError = console.error;
47
- const mockConsoleLog = vi.fn();
48
- const mockConsoleError = vi.fn();
49
- const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => undefined);
50
- describe('SMI-1353: CLI recommend command — errors / limit / trust tier', () => {
51
- beforeEach(() => {
52
- vi.clearAllMocks();
53
- console.log = mockConsoleLog;
54
- console.error = mockConsoleError;
55
- mockAnalyze.mockResolvedValue(createMockCodebaseContext());
56
- mockGetRecommendations.mockResolvedValue(createMockApiResponse());
57
- });
58
- afterEach(() => {
59
- console.log = originalConsoleLog;
60
- console.error = originalConsoleError;
61
- });
62
- // ==========================================================================
63
- // Error Handling Tests
64
- // ==========================================================================
65
- describe('error handling', () => {
66
- it('should handle CodebaseAnalyzer errors gracefully', async () => {
67
- mockAnalyze.mockRejectedValue(new Error('Cannot read directory'));
68
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
69
- const cmd = createRecommendCommand();
70
- await cmd.parseAsync(['node', 'test', '/nonexistent']);
71
- expect(mockSpinner.fail).toHaveBeenCalledWith('Recommendation failed');
72
- expect(mockExit).toHaveBeenCalledWith(1);
73
- });
74
- it('should handle API errors gracefully', async () => {
75
- mockGetRecommendations.mockRejectedValue(new Error('API unavailable'));
76
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
77
- const cmd = createRecommendCommand();
78
- await cmd.parseAsync(['node', 'test', '.']);
79
- expect(mockSpinner.fail).toHaveBeenCalledWith('Recommendation failed');
80
- expect(mockExit).toHaveBeenCalledWith(1);
81
- });
82
- it('should output error as JSON with --json flag on failure', async () => {
83
- mockAnalyze.mockRejectedValue(new Error('Analysis failed'));
84
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
85
- const cmd = createRecommendCommand();
86
- await cmd.parseAsync(['node', 'test', '.', '--json']);
87
- const errorOutput = mockConsoleError.mock.calls[0][0];
88
- const parsed = JSON.parse(errorOutput);
89
- expect(parsed).toHaveProperty('error');
90
- });
91
- it('should sanitize error messages (remove user paths)', async () => {
92
- mockAnalyze.mockRejectedValue(new Error('Error at /Users/secret/project'));
93
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
94
- const cmd = createRecommendCommand();
95
- await cmd.parseAsync(['node', 'test', '.']);
96
- const errorCalls = mockConsoleError.mock.calls;
97
- expect(errorCalls.length).toBeGreaterThan(0);
98
- });
99
- it('should handle network errors with offline fallback', async () => {
100
- const context = createMockCodebaseContext();
101
- mockAnalyze.mockResolvedValue(context);
102
- const networkError = new Error('fetch failed');
103
- mockGetRecommendations.mockRejectedValue(networkError);
104
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
105
- const cmd = createRecommendCommand();
106
- await cmd.parseAsync(['node', 'test', '.']);
107
- expect(mockSpinner.warn).toHaveBeenCalledWith(expect.stringContaining('Unable to reach API'));
108
- const output = mockConsoleLog.mock.calls.map((c) => c[0]).join('\n');
109
- expect(output).toContain('Codebase Analysis');
110
- });
111
- it('should show offline JSON output on network error with --json', async () => {
112
- mockAnalyze.mockResolvedValue(createMockCodebaseContext());
113
- mockGetRecommendations.mockRejectedValue(new Error('fetch failed'));
114
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
115
- const cmd = createRecommendCommand();
116
- await cmd.parseAsync(['node', 'test', '.', '--json']);
117
- const output = mockConsoleLog.mock.calls[0][0];
118
- const parsed = JSON.parse(output);
119
- expect(parsed.offline).toBe(true);
120
- expect(parsed.analysis).toBeDefined();
121
- });
122
- });
123
- // ==========================================================================
124
- // Limit Validation Tests
125
- // ==========================================================================
126
- describe('limit option validation', () => {
127
- it('should default to limit 5 when not specified', async () => {
128
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
129
- const cmd = createRecommendCommand();
130
- await cmd.parseAsync(['node', 'test', '.']);
131
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
132
- limit: 5,
133
- }));
134
- });
135
- it('should clamp limit to minimum of 1', async () => {
136
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
137
- const cmd = createRecommendCommand();
138
- await cmd.parseAsync(['node', 'test', '.', '--limit', '0']);
139
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
140
- limit: 1,
141
- }));
142
- });
143
- it('should clamp limit to maximum of 50', async () => {
144
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
145
- const cmd = createRecommendCommand();
146
- await cmd.parseAsync(['node', 'test', '.', '--limit', '100']);
147
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
148
- limit: 50,
149
- }));
150
- });
151
- it('should handle non-numeric limit gracefully', async () => {
152
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
153
- const cmd = createRecommendCommand();
154
- await cmd.parseAsync(['node', 'test', '.', '--limit', 'invalid']);
155
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
156
- limit: 5,
157
- }));
158
- });
159
- });
160
- // ==========================================================================
161
- // Trust Tier Handling Tests
162
- // ==========================================================================
163
- describe('trust tier handling', () => {
164
- it('should display VERIFIED badge for verified skills', async () => {
165
- mockGetRecommendations.mockResolvedValue(createMockApiResponse([
166
- {
167
- id: 'test/skill',
168
- name: 'Verified Skill',
169
- description: 'A verified skill',
170
- author: 'test',
171
- repo_url: null,
172
- quality_score: 0.9,
173
- trust_tier: 'verified',
174
- tags: [],
175
- stars: 100,
176
- created_at: '2024-01-01',
177
- updated_at: '2024-01-01',
178
- },
179
- ]));
180
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
181
- const cmd = createRecommendCommand();
182
- await cmd.parseAsync(['node', 'test', '.']);
183
- const output = mockConsoleLog.mock.calls.map((c) => c[0]).join('\n');
184
- expect(output).toContain('VERIFIED');
185
- });
186
- it('should display COMMUNITY badge for community skills', async () => {
187
- mockGetRecommendations.mockResolvedValue(createMockApiResponse([
188
- {
189
- id: 'test/skill',
190
- name: 'Community Skill',
191
- description: 'A community skill',
192
- author: 'test',
193
- repo_url: null,
194
- quality_score: 0.7,
195
- trust_tier: 'community',
196
- tags: [],
197
- stars: 50,
198
- created_at: '2024-01-01',
199
- updated_at: '2024-01-01',
200
- },
201
- ]));
202
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
203
- const cmd = createRecommendCommand();
204
- await cmd.parseAsync(['node', 'test', '.']);
205
- const output = mockConsoleLog.mock.calls.map((c) => c[0]).join('\n');
206
- expect(output).toContain('COMMUNITY');
207
- });
208
- it('should handle unknown trust tier gracefully', async () => {
209
- mockGetRecommendations.mockResolvedValue(createMockApiResponse([
210
- {
211
- id: 'test/skill',
212
- name: 'Unknown Tier Skill',
213
- description: 'A skill with invalid tier',
214
- author: 'test',
215
- repo_url: null,
216
- quality_score: 0.5,
217
- trust_tier: 'invalid_tier',
218
- tags: [],
219
- stars: 10,
220
- created_at: '2024-01-01',
221
- updated_at: '2024-01-01',
222
- },
223
- ]));
224
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
225
- const cmd = createRecommendCommand();
226
- await cmd.parseAsync(['node', 'test', '.']);
227
- const output = mockConsoleLog.mock.calls.map((c) => c[0]).join('\n');
228
- expect(output).toContain('UNKNOWN');
229
- });
230
- });
231
- });
232
- //# sourceMappingURL=recommend.errors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.errors.test.js","sourceRoot":"","sources":["../../tests/recommend.errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * SMI-1353: CLI recommend command — stack building, role-based filtering,
3
- * module exports.
4
- *
5
- * Sibling of recommend.test.ts and recommend.errors.test.ts; see those files
6
- * for context. Shared mocks/fixtures live in recommend.test-helpers.
7
- */
8
- export {};
9
- //# sourceMappingURL=recommend.filters.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.filters.test.d.ts","sourceRoot":"","sources":["../../tests/recommend.filters.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,235 +0,0 @@
1
- /**
2
- * SMI-1353: CLI recommend command — stack building, role-based filtering,
3
- * module exports.
4
- *
5
- * Sibling of recommend.test.ts and recommend.errors.test.ts; see those files
6
- * for context. Shared mocks/fixtures live in recommend.test-helpers.
7
- */
8
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
9
- import { createMockCodebaseContext, createMockApiResponse } from './recommend.test-helpers.js';
10
- const mocks = vi.hoisted(() => ({
11
- analyze: vi.fn(),
12
- getRecommendations: vi.fn(),
13
- spinner: {
14
- start: vi.fn().mockReturnThis(),
15
- stop: vi.fn().mockReturnThis(),
16
- succeed: vi.fn().mockReturnThis(),
17
- fail: vi.fn().mockReturnThis(),
18
- warn: vi.fn().mockReturnThis(),
19
- text: '',
20
- },
21
- }));
22
- vi.mock('@skillsmith/core', () => ({
23
- CodebaseAnalyzer: class MockCodebaseAnalyzer {
24
- analyze(...args) {
25
- return mocks.analyze(...args);
26
- }
27
- },
28
- createApiClient: () => ({
29
- getRecommendations: (...args) => mocks.getRecommendations(...args),
30
- }),
31
- // SMI-4474: stub for JWT auto-load (tests don't exercise the JWT path).
32
- loadStoredAccessToken: () => Promise.resolve(null),
33
- SKILL_ROLES: [
34
- 'code-quality',
35
- 'testing',
36
- 'documentation',
37
- 'workflow',
38
- 'security',
39
- 'development-partner',
40
- ],
41
- }));
42
- vi.mock('ora', () => ({ default: () => mocks.spinner }));
43
- const mockAnalyze = mocks.analyze;
44
- const mockGetRecommendations = mocks.getRecommendations;
45
- const originalConsoleLog = console.log;
46
- const originalConsoleError = console.error;
47
- const mockConsoleLog = vi.fn();
48
- const mockConsoleError = vi.fn();
49
- vi.spyOn(process, 'exit').mockImplementation(() => undefined);
50
- describe('SMI-1353: CLI recommend command — stack / role filter / exports', () => {
51
- beforeEach(() => {
52
- vi.clearAllMocks();
53
- console.log = mockConsoleLog;
54
- console.error = mockConsoleError;
55
- mockAnalyze.mockResolvedValue(createMockCodebaseContext());
56
- mockGetRecommendations.mockResolvedValue(createMockApiResponse());
57
- });
58
- afterEach(() => {
59
- console.log = originalConsoleLog;
60
- console.error = originalConsoleError;
61
- });
62
- // ==========================================================================
63
- // Stack Building Tests
64
- // ==========================================================================
65
- describe('stack building from analysis', () => {
66
- it('should include framework names in stack (lowercase)', async () => {
67
- mockAnalyze.mockResolvedValue(createMockCodebaseContext({
68
- frameworks: [
69
- { name: 'Next.js', confidence: 0.9, source: 'dep', detectedFrom: [] },
70
- { name: 'TailwindCSS', confidence: 0.85, source: 'dep', detectedFrom: [] },
71
- ],
72
- dependencies: [{ name: 'next', version: '^14.0.0', isDev: false }],
73
- }));
74
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
75
- const cmd = createRecommendCommand();
76
- await cmd.parseAsync(['node', 'test', '.']);
77
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
78
- stack: expect.arrayContaining(['next.js', 'tailwindcss']),
79
- }));
80
- });
81
- it('should include non-dev dependencies in stack', async () => {
82
- mockAnalyze.mockResolvedValue(createMockCodebaseContext({
83
- frameworks: [{ name: 'Express', confidence: 0.9, source: 'dep', detectedFrom: [] }],
84
- dependencies: [
85
- { name: 'express', version: '^4.0.0', isDev: false },
86
- { name: 'mongoose', version: '^7.0.0', isDev: false },
87
- ],
88
- }));
89
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
90
- const cmd = createRecommendCommand();
91
- await cmd.parseAsync(['node', 'test', '.']);
92
- expect(mockGetRecommendations).toHaveBeenCalledWith(expect.objectContaining({
93
- stack: expect.arrayContaining(['express', 'mongoose']),
94
- }));
95
- });
96
- it('should exclude dev dependencies from stack', async () => {
97
- mockAnalyze.mockResolvedValue(createMockCodebaseContext({
98
- frameworks: [{ name: 'React', confidence: 0.9, source: 'dep', detectedFrom: [] }],
99
- dependencies: [
100
- { name: 'react', version: '^18.0.0', isDev: false },
101
- { name: 'jest', version: '^29.0.0', isDev: true },
102
- { name: 'eslint', version: '^8.0.0', isDev: true },
103
- ],
104
- }));
105
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
106
- const cmd = createRecommendCommand();
107
- await cmd.parseAsync(['node', 'test', '.']);
108
- const call = mockGetRecommendations.mock.calls[0][0];
109
- expect(call.stack).not.toContain('jest');
110
- expect(call.stack).not.toContain('eslint');
111
- expect(call.stack).toContain('react');
112
- });
113
- it('should limit stack to 10 items', async () => {
114
- mockAnalyze.mockResolvedValue(createMockCodebaseContext({
115
- frameworks: Array.from({ length: 6 }, (_, i) => ({
116
- name: `Framework${i}`,
117
- confidence: 0.9,
118
- source: 'dep',
119
- detectedFrom: [],
120
- })),
121
- dependencies: Array.from({ length: 12 }, (_, i) => ({
122
- name: `dep${i}`,
123
- version: '^1.0.0',
124
- isDev: false,
125
- })),
126
- }));
127
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
128
- const cmd = createRecommendCommand();
129
- await cmd.parseAsync(['node', 'test', '.']);
130
- const call = mockGetRecommendations.mock.calls[0][0];
131
- expect(call.stack.length).toBeLessThanOrEqual(10);
132
- });
133
- it('should deduplicate stack items', async () => {
134
- mockAnalyze.mockResolvedValue(createMockCodebaseContext({
135
- frameworks: [{ name: 'React', confidence: 0.9, source: 'dep', detectedFrom: [] }],
136
- dependencies: [{ name: 'react', version: '^18.0.0', isDev: false }],
137
- }));
138
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
139
- const cmd = createRecommendCommand();
140
- await cmd.parseAsync(['node', 'test', '.']);
141
- const call = mockGetRecommendations.mock.calls[0][0];
142
- const reactCount = call.stack.filter((s) => s === 'react').length;
143
- expect(reactCount).toBe(1);
144
- });
145
- });
146
- // ==========================================================================
147
- // SMI-1631: Role-Based Filtering Tests
148
- // ==========================================================================
149
- describe('role-based filtering', () => {
150
- it('should apply role filtering locally', async () => {
151
- mockGetRecommendations.mockResolvedValue(createMockApiResponse([
152
- {
153
- id: 'test/test-helper',
154
- name: 'Test Helper',
155
- description: 'Testing utilities',
156
- author: 'test',
157
- repo_url: null,
158
- quality_score: 0.8,
159
- trust_tier: 'verified',
160
- tags: ['testing', 'jest', 'unit-test'],
161
- stars: 100,
162
- created_at: '2024-01-01',
163
- updated_at: '2024-01-01',
164
- },
165
- ]));
166
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
167
- const cmd = createRecommendCommand();
168
- await cmd.parseAsync(['node', 'test', '.', '--role', 'testing', '--json']);
169
- const output = mockConsoleLog.mock.calls[0][0];
170
- const parsed = JSON.parse(output);
171
- expect(parsed.meta.role_filter).toBe('testing');
172
- });
173
- it('should not set role filter for invalid role', async () => {
174
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
175
- const cmd = createRecommendCommand();
176
- await cmd.parseAsync(['node', 'test', '.', '--role', 'invalid-role', '--json']);
177
- const output = mockConsoleLog.mock.calls[0][0];
178
- const parsed = JSON.parse(output);
179
- expect(parsed.meta.role_filter).toBeNull();
180
- });
181
- it('should warn user about invalid role', async () => {
182
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
183
- const cmd = createRecommendCommand();
184
- await cmd.parseAsync(['node', 'test', '.', '--role', 'not-a-role']);
185
- const errorOutput = mockConsoleError.mock.calls.map((c) => c[0]).join('\n');
186
- expect(errorOutput).toContain('Invalid role');
187
- expect(errorOutput).toContain('not-a-role');
188
- });
189
- it('should accept all valid role values', async () => {
190
- const validRoles = [
191
- 'code-quality',
192
- 'testing',
193
- 'documentation',
194
- 'workflow',
195
- 'security',
196
- 'development-partner',
197
- ];
198
- for (const role of validRoles) {
199
- vi.clearAllMocks();
200
- mockAnalyze.mockResolvedValue(createMockCodebaseContext());
201
- mockGetRecommendations.mockResolvedValue(createMockApiResponse());
202
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
203
- const cmd = createRecommendCommand();
204
- await cmd.parseAsync(['node', 'test', '.', '-r', role, '--json']);
205
- const output = mockConsoleLog.mock.calls[0][0];
206
- const parsed = JSON.parse(output);
207
- expect(parsed.meta.role_filter).toBe(role);
208
- }
209
- });
210
- it('should include role_filter in JSON output when specified', async () => {
211
- const { createRecommendCommand } = await import('../src/commands/recommend.js');
212
- const cmd = createRecommendCommand();
213
- await cmd.parseAsync(['node', 'test', '.', '--role', 'security', '--json']);
214
- const output = mockConsoleLog.mock.calls[0][0];
215
- const parsed = JSON.parse(output);
216
- expect(parsed.meta.role_filter).toBe('security');
217
- });
218
- });
219
- // ==========================================================================
220
- // Export Tests
221
- // ==========================================================================
222
- describe('module exports', () => {
223
- it('should export createRecommendCommand from commands/index', async () => {
224
- const indexExports = await import('../src/commands/index.js');
225
- expect(indexExports.createRecommendCommand).toBeDefined();
226
- expect(typeof indexExports.createRecommendCommand).toBe('function');
227
- });
228
- it('should export createRecommendCommand as default', async () => {
229
- const mod = await import('../src/commands/recommend.js');
230
- expect(mod.default).toBeDefined();
231
- expect(typeof mod.default).toBe('function');
232
- });
233
- });
234
- });
235
- //# sourceMappingURL=recommend.filters.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.filters.test.js","sourceRoot":"","sources":["../../tests/recommend.filters.test.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- /**
2
- * Shared fixtures for the SMI-1353 recommend command test files.
3
- *
4
- * The full suite was split across three sibling files (`recommend.test.ts`,
5
- * `recommend.errors.test.ts`, `recommend.filters.test.ts`) so each file stays
6
- * under the 500-line standard. Pure fixtures (no `vi.hoisted`, no mock
7
- * factory) live here; each test file owns its own `vi.hoisted` mocks +
8
- * `vi.mock(...)` block since vitest doesn't allow exporting hoisted values
9
- * across module boundaries.
10
- */
11
- /**
12
- * Skill data type for mock responses
13
- */
14
- export interface MockSkillData {
15
- id: string;
16
- name: string;
17
- description: string;
18
- author: string;
19
- repo_url: string | null;
20
- quality_score: number;
21
- trust_tier: string;
22
- tags: string[];
23
- stars: number;
24
- created_at: string;
25
- updated_at: string;
26
- }
27
- /**
28
- * Creates a mock CodebaseContext for testing
29
- */
30
- export declare function createMockCodebaseContext(overrides?: {}): {
31
- rootPath: string;
32
- imports: never[];
33
- exports: never[];
34
- functions: never[];
35
- frameworks: {
36
- name: string;
37
- confidence: number;
38
- source: string;
39
- detectedFrom: never[];
40
- }[];
41
- dependencies: {
42
- name: string;
43
- version: string;
44
- isDev: boolean;
45
- }[];
46
- stats: {
47
- totalFiles: number;
48
- filesByExtension: {
49
- '.ts': number;
50
- '.tsx': number;
51
- };
52
- totalLines: number;
53
- };
54
- metadata: {
55
- durationMs: number;
56
- version: string;
57
- };
58
- };
59
- /**
60
- * Creates a mock API response for recommendations
61
- */
62
- export declare function createMockApiResponse(skills?: MockSkillData[]): {
63
- data: MockSkillData[];
64
- meta: {};
65
- };
66
- //# sourceMappingURL=recommend.test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.test-helpers.d.ts","sourceRoot":"","sources":["../../tests/recommend.test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,aAAa,EAAO;;;EAmCjE"}