@fastino-ai/pioneer-cli 0.2.5 → 0.2.7

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 (1060) hide show
  1. package/package.json +8 -3
  2. package/src/api.ts +1601 -115
  3. package/src/index.tsx +1234 -29
  4. package/.claude/settings.local.json +0 -24
  5. package/.cursor/rules/api-documentation.mdc +0 -17
  6. package/.cursor/rules/backend-location-rule.mdc +0 -5
  7. package/.github/workflows/pioneer-cli-tests.yml +0 -44
  8. package/Medical_NER_Dataset_1.jsonl +0 -50
  9. package/bun.lock +0 -264
  10. package/cache/cache.db +0 -0
  11. package/cache/cache.db-shm +0 -0
  12. package/cache/cache.db-wal +0 -0
  13. package/datasets/Medical_NER_Dataset.json +0 -2609
  14. package/datasets/ner-dataset.json +0 -57
  15. package/datasets/test-remote.json +0 -41
  16. package/datasets/test-warning.json +0 -49
  17. package/install.sh +0 -68
  18. package/tsconfig.json +0 -22
  19. package/workspaces/0-skinny-mink-of-management/input/private/test.csv +0 -100
  20. package/workspaces/0-skinny-mink-of-management/input/public/description.md +0 -70
  21. package/workspaces/0-skinny-mink-of-management/input/public/images/1.jpg +0 -0
  22. package/workspaces/0-skinny-mink-of-management/input/public/images/10.jpg +0 -0
  23. package/workspaces/0-skinny-mink-of-management/input/public/images/100.jpg +0 -0
  24. package/workspaces/0-skinny-mink-of-management/input/public/images/1000.jpg +0 -0
  25. package/workspaces/0-skinny-mink-of-management/input/public/images/1001.jpg +0 -0
  26. package/workspaces/0-skinny-mink-of-management/input/public/images/1002.jpg +0 -0
  27. package/workspaces/0-skinny-mink-of-management/input/public/images/1003.jpg +0 -0
  28. package/workspaces/0-skinny-mink-of-management/input/public/images/1004.jpg +0 -0
  29. package/workspaces/0-skinny-mink-of-management/input/public/images/1005.jpg +0 -0
  30. package/workspaces/0-skinny-mink-of-management/input/public/images/1006.jpg +0 -0
  31. package/workspaces/0-skinny-mink-of-management/input/public/images/1007.jpg +0 -0
  32. package/workspaces/0-skinny-mink-of-management/input/public/images/101.jpg +0 -0
  33. package/workspaces/0-skinny-mink-of-management/input/public/images/1010.jpg +0 -0
  34. package/workspaces/0-skinny-mink-of-management/input/public/images/1011.jpg +0 -0
  35. package/workspaces/0-skinny-mink-of-management/input/public/images/1013.jpg +0 -0
  36. package/workspaces/0-skinny-mink-of-management/input/public/images/1014.jpg +0 -0
  37. package/workspaces/0-skinny-mink-of-management/input/public/images/1016.jpg +0 -0
  38. package/workspaces/0-skinny-mink-of-management/input/public/images/1017.jpg +0 -0
  39. package/workspaces/0-skinny-mink-of-management/input/public/images/1019.jpg +0 -0
  40. package/workspaces/0-skinny-mink-of-management/input/public/images/1021.jpg +0 -0
  41. package/workspaces/0-skinny-mink-of-management/input/public/images/1023.jpg +0 -0
  42. package/workspaces/0-skinny-mink-of-management/input/public/images/1024.jpg +0 -0
  43. package/workspaces/0-skinny-mink-of-management/input/public/images/1025.jpg +0 -0
  44. package/workspaces/0-skinny-mink-of-management/input/public/images/1027.jpg +0 -0
  45. package/workspaces/0-skinny-mink-of-management/input/public/images/103.jpg +0 -0
  46. package/workspaces/0-skinny-mink-of-management/input/public/images/1030.jpg +0 -0
  47. package/workspaces/0-skinny-mink-of-management/input/public/images/1031.jpg +0 -0
  48. package/workspaces/0-skinny-mink-of-management/input/public/images/1032.jpg +0 -0
  49. package/workspaces/0-skinny-mink-of-management/input/public/images/1034.jpg +0 -0
  50. package/workspaces/0-skinny-mink-of-management/input/public/images/1036.jpg +0 -0
  51. package/workspaces/0-skinny-mink-of-management/input/public/images/1037.jpg +0 -0
  52. package/workspaces/0-skinny-mink-of-management/input/public/images/1039.jpg +0 -0
  53. package/workspaces/0-skinny-mink-of-management/input/public/images/1040.jpg +0 -0
  54. package/workspaces/0-skinny-mink-of-management/input/public/images/1041.jpg +0 -0
  55. package/workspaces/0-skinny-mink-of-management/input/public/images/1042.jpg +0 -0
  56. package/workspaces/0-skinny-mink-of-management/input/public/images/1046.jpg +0 -0
  57. package/workspaces/0-skinny-mink-of-management/input/public/images/1048.jpg +0 -0
  58. package/workspaces/0-skinny-mink-of-management/input/public/images/1049.jpg +0 -0
  59. package/workspaces/0-skinny-mink-of-management/input/public/images/1051.jpg +0 -0
  60. package/workspaces/0-skinny-mink-of-management/input/public/images/1052.jpg +0 -0
  61. package/workspaces/0-skinny-mink-of-management/input/public/images/1056.jpg +0 -0
  62. package/workspaces/0-skinny-mink-of-management/input/public/images/1059.jpg +0 -0
  63. package/workspaces/0-skinny-mink-of-management/input/public/images/106.jpg +0 -0
  64. package/workspaces/0-skinny-mink-of-management/input/public/images/1061.jpg +0 -0
  65. package/workspaces/0-skinny-mink-of-management/input/public/images/1062.jpg +0 -0
  66. package/workspaces/0-skinny-mink-of-management/input/public/images/1065.jpg +0 -0
  67. package/workspaces/0-skinny-mink-of-management/input/public/images/1066.jpg +0 -0
  68. package/workspaces/0-skinny-mink-of-management/input/public/images/107.jpg +0 -0
  69. package/workspaces/0-skinny-mink-of-management/input/public/images/1072.jpg +0 -0
  70. package/workspaces/0-skinny-mink-of-management/input/public/images/1073.jpg +0 -0
  71. package/workspaces/0-skinny-mink-of-management/input/public/images/1076.jpg +0 -0
  72. package/workspaces/0-skinny-mink-of-management/input/public/images/1077.jpg +0 -0
  73. package/workspaces/0-skinny-mink-of-management/input/public/images/108.jpg +0 -0
  74. package/workspaces/0-skinny-mink-of-management/input/public/images/1080.jpg +0 -0
  75. package/workspaces/0-skinny-mink-of-management/input/public/images/1081.jpg +0 -0
  76. package/workspaces/0-skinny-mink-of-management/input/public/images/1083.jpg +0 -0
  77. package/workspaces/0-skinny-mink-of-management/input/public/images/1085.jpg +0 -0
  78. package/workspaces/0-skinny-mink-of-management/input/public/images/1087.jpg +0 -0
  79. package/workspaces/0-skinny-mink-of-management/input/public/images/1088.jpg +0 -0
  80. package/workspaces/0-skinny-mink-of-management/input/public/images/1089.jpg +0 -0
  81. package/workspaces/0-skinny-mink-of-management/input/public/images/109.jpg +0 -0
  82. package/workspaces/0-skinny-mink-of-management/input/public/images/1090.jpg +0 -0
  83. package/workspaces/0-skinny-mink-of-management/input/public/images/1093.jpg +0 -0
  84. package/workspaces/0-skinny-mink-of-management/input/public/images/1094.jpg +0 -0
  85. package/workspaces/0-skinny-mink-of-management/input/public/images/1095.jpg +0 -0
  86. package/workspaces/0-skinny-mink-of-management/input/public/images/1096.jpg +0 -0
  87. package/workspaces/0-skinny-mink-of-management/input/public/images/1097.jpg +0 -0
  88. package/workspaces/0-skinny-mink-of-management/input/public/images/1098.jpg +0 -0
  89. package/workspaces/0-skinny-mink-of-management/input/public/images/11.jpg +0 -0
  90. package/workspaces/0-skinny-mink-of-management/input/public/images/1100.jpg +0 -0
  91. package/workspaces/0-skinny-mink-of-management/input/public/images/1101.jpg +0 -0
  92. package/workspaces/0-skinny-mink-of-management/input/public/images/1110.jpg +0 -0
  93. package/workspaces/0-skinny-mink-of-management/input/public/images/1112.jpg +0 -0
  94. package/workspaces/0-skinny-mink-of-management/input/public/images/1113.jpg +0 -0
  95. package/workspaces/0-skinny-mink-of-management/input/public/images/1117.jpg +0 -0
  96. package/workspaces/0-skinny-mink-of-management/input/public/images/1118.jpg +0 -0
  97. package/workspaces/0-skinny-mink-of-management/input/public/images/1119.jpg +0 -0
  98. package/workspaces/0-skinny-mink-of-management/input/public/images/1120.jpg +0 -0
  99. package/workspaces/0-skinny-mink-of-management/input/public/images/1121.jpg +0 -0
  100. package/workspaces/0-skinny-mink-of-management/input/public/images/1123.jpg +0 -0
  101. package/workspaces/0-skinny-mink-of-management/input/public/images/1124.jpg +0 -0
  102. package/workspaces/0-skinny-mink-of-management/input/public/images/1125.jpg +0 -0
  103. package/workspaces/0-skinny-mink-of-management/input/public/images/1128.jpg +0 -0
  104. package/workspaces/0-skinny-mink-of-management/input/public/images/1130.jpg +0 -0
  105. package/workspaces/0-skinny-mink-of-management/input/public/images/1131.jpg +0 -0
  106. package/workspaces/0-skinny-mink-of-management/input/public/images/1132.jpg +0 -0
  107. package/workspaces/0-skinny-mink-of-management/input/public/images/1134.jpg +0 -0
  108. package/workspaces/0-skinny-mink-of-management/input/public/images/1135.jpg +0 -0
  109. package/workspaces/0-skinny-mink-of-management/input/public/images/1136.jpg +0 -0
  110. package/workspaces/0-skinny-mink-of-management/input/public/images/1142.jpg +0 -0
  111. package/workspaces/0-skinny-mink-of-management/input/public/images/1144.jpg +0 -0
  112. package/workspaces/0-skinny-mink-of-management/input/public/images/1145.jpg +0 -0
  113. package/workspaces/0-skinny-mink-of-management/input/public/images/1147.jpg +0 -0
  114. package/workspaces/0-skinny-mink-of-management/input/public/images/1148.jpg +0 -0
  115. package/workspaces/0-skinny-mink-of-management/input/public/images/115.jpg +0 -0
  116. package/workspaces/0-skinny-mink-of-management/input/public/images/1152.jpg +0 -0
  117. package/workspaces/0-skinny-mink-of-management/input/public/images/1153.jpg +0 -0
  118. package/workspaces/0-skinny-mink-of-management/input/public/images/1154.jpg +0 -0
  119. package/workspaces/0-skinny-mink-of-management/input/public/images/1156.jpg +0 -0
  120. package/workspaces/0-skinny-mink-of-management/input/public/images/1157.jpg +0 -0
  121. package/workspaces/0-skinny-mink-of-management/input/public/images/1159.jpg +0 -0
  122. package/workspaces/0-skinny-mink-of-management/input/public/images/116.jpg +0 -0
  123. package/workspaces/0-skinny-mink-of-management/input/public/images/1160.jpg +0 -0
  124. package/workspaces/0-skinny-mink-of-management/input/public/images/1163.jpg +0 -0
  125. package/workspaces/0-skinny-mink-of-management/input/public/images/1165.jpg +0 -0
  126. package/workspaces/0-skinny-mink-of-management/input/public/images/1166.jpg +0 -0
  127. package/workspaces/0-skinny-mink-of-management/input/public/images/1167.jpg +0 -0
  128. package/workspaces/0-skinny-mink-of-management/input/public/images/1168.jpg +0 -0
  129. package/workspaces/0-skinny-mink-of-management/input/public/images/1169.jpg +0 -0
  130. package/workspaces/0-skinny-mink-of-management/input/public/images/1170.jpg +0 -0
  131. package/workspaces/0-skinny-mink-of-management/input/public/images/1171.jpg +0 -0
  132. package/workspaces/0-skinny-mink-of-management/input/public/images/1172.jpg +0 -0
  133. package/workspaces/0-skinny-mink-of-management/input/public/images/1173.jpg +0 -0
  134. package/workspaces/0-skinny-mink-of-management/input/public/images/1174.jpg +0 -0
  135. package/workspaces/0-skinny-mink-of-management/input/public/images/1175.jpg +0 -0
  136. package/workspaces/0-skinny-mink-of-management/input/public/images/1176.jpg +0 -0
  137. package/workspaces/0-skinny-mink-of-management/input/public/images/1179.jpg +0 -0
  138. package/workspaces/0-skinny-mink-of-management/input/public/images/118.jpg +0 -0
  139. package/workspaces/0-skinny-mink-of-management/input/public/images/1180.jpg +0 -0
  140. package/workspaces/0-skinny-mink-of-management/input/public/images/1182.jpg +0 -0
  141. package/workspaces/0-skinny-mink-of-management/input/public/images/1184.jpg +0 -0
  142. package/workspaces/0-skinny-mink-of-management/input/public/images/1186.jpg +0 -0
  143. package/workspaces/0-skinny-mink-of-management/input/public/images/1187.jpg +0 -0
  144. package/workspaces/0-skinny-mink-of-management/input/public/images/1194.jpg +0 -0
  145. package/workspaces/0-skinny-mink-of-management/input/public/images/1196.jpg +0 -0
  146. package/workspaces/0-skinny-mink-of-management/input/public/images/1197.jpg +0 -0
  147. package/workspaces/0-skinny-mink-of-management/input/public/images/1198.jpg +0 -0
  148. package/workspaces/0-skinny-mink-of-management/input/public/images/120.jpg +0 -0
  149. package/workspaces/0-skinny-mink-of-management/input/public/images/1200.jpg +0 -0
  150. package/workspaces/0-skinny-mink-of-management/input/public/images/1201.jpg +0 -0
  151. package/workspaces/0-skinny-mink-of-management/input/public/images/1202.jpg +0 -0
  152. package/workspaces/0-skinny-mink-of-management/input/public/images/1205.jpg +0 -0
  153. package/workspaces/0-skinny-mink-of-management/input/public/images/1206.jpg +0 -0
  154. package/workspaces/0-skinny-mink-of-management/input/public/images/1208.jpg +0 -0
  155. package/workspaces/0-skinny-mink-of-management/input/public/images/1210.jpg +0 -0
  156. package/workspaces/0-skinny-mink-of-management/input/public/images/1211.jpg +0 -0
  157. package/workspaces/0-skinny-mink-of-management/input/public/images/1213.jpg +0 -0
  158. package/workspaces/0-skinny-mink-of-management/input/public/images/1216.jpg +0 -0
  159. package/workspaces/0-skinny-mink-of-management/input/public/images/1217.jpg +0 -0
  160. package/workspaces/0-skinny-mink-of-management/input/public/images/1218.jpg +0 -0
  161. package/workspaces/0-skinny-mink-of-management/input/public/images/1219.jpg +0 -0
  162. package/workspaces/0-skinny-mink-of-management/input/public/images/122.jpg +0 -0
  163. package/workspaces/0-skinny-mink-of-management/input/public/images/1220.jpg +0 -0
  164. package/workspaces/0-skinny-mink-of-management/input/public/images/1221.jpg +0 -0
  165. package/workspaces/0-skinny-mink-of-management/input/public/images/1222.jpg +0 -0
  166. package/workspaces/0-skinny-mink-of-management/input/public/images/1223.jpg +0 -0
  167. package/workspaces/0-skinny-mink-of-management/input/public/images/1225.jpg +0 -0
  168. package/workspaces/0-skinny-mink-of-management/input/public/images/1226.jpg +0 -0
  169. package/workspaces/0-skinny-mink-of-management/input/public/images/1228.jpg +0 -0
  170. package/workspaces/0-skinny-mink-of-management/input/public/images/1229.jpg +0 -0
  171. package/workspaces/0-skinny-mink-of-management/input/public/images/1231.jpg +0 -0
  172. package/workspaces/0-skinny-mink-of-management/input/public/images/1232.jpg +0 -0
  173. package/workspaces/0-skinny-mink-of-management/input/public/images/1235.jpg +0 -0
  174. package/workspaces/0-skinny-mink-of-management/input/public/images/1236.jpg +0 -0
  175. package/workspaces/0-skinny-mink-of-management/input/public/images/1238.jpg +0 -0
  176. package/workspaces/0-skinny-mink-of-management/input/public/images/1239.jpg +0 -0
  177. package/workspaces/0-skinny-mink-of-management/input/public/images/124.jpg +0 -0
  178. package/workspaces/0-skinny-mink-of-management/input/public/images/1240.jpg +0 -0
  179. package/workspaces/0-skinny-mink-of-management/input/public/images/1242.jpg +0 -0
  180. package/workspaces/0-skinny-mink-of-management/input/public/images/1243.jpg +0 -0
  181. package/workspaces/0-skinny-mink-of-management/input/public/images/1244.jpg +0 -0
  182. package/workspaces/0-skinny-mink-of-management/input/public/images/1245.jpg +0 -0
  183. package/workspaces/0-skinny-mink-of-management/input/public/images/1249.jpg +0 -0
  184. package/workspaces/0-skinny-mink-of-management/input/public/images/1250.jpg +0 -0
  185. package/workspaces/0-skinny-mink-of-management/input/public/images/1251.jpg +0 -0
  186. package/workspaces/0-skinny-mink-of-management/input/public/images/1253.jpg +0 -0
  187. package/workspaces/0-skinny-mink-of-management/input/public/images/1254.jpg +0 -0
  188. package/workspaces/0-skinny-mink-of-management/input/public/images/1255.jpg +0 -0
  189. package/workspaces/0-skinny-mink-of-management/input/public/images/1256.jpg +0 -0
  190. package/workspaces/0-skinny-mink-of-management/input/public/images/1257.jpg +0 -0
  191. package/workspaces/0-skinny-mink-of-management/input/public/images/1258.jpg +0 -0
  192. package/workspaces/0-skinny-mink-of-management/input/public/images/1262.jpg +0 -0
  193. package/workspaces/0-skinny-mink-of-management/input/public/images/1263.jpg +0 -0
  194. package/workspaces/0-skinny-mink-of-management/input/public/images/1265.jpg +0 -0
  195. package/workspaces/0-skinny-mink-of-management/input/public/images/1268.jpg +0 -0
  196. package/workspaces/0-skinny-mink-of-management/input/public/images/1269.jpg +0 -0
  197. package/workspaces/0-skinny-mink-of-management/input/public/images/127.jpg +0 -0
  198. package/workspaces/0-skinny-mink-of-management/input/public/images/1270.jpg +0 -0
  199. package/workspaces/0-skinny-mink-of-management/input/public/images/1271.jpg +0 -0
  200. package/workspaces/0-skinny-mink-of-management/input/public/images/1273.jpg +0 -0
  201. package/workspaces/0-skinny-mink-of-management/input/public/images/1275.jpg +0 -0
  202. package/workspaces/0-skinny-mink-of-management/input/public/images/1276.jpg +0 -0
  203. package/workspaces/0-skinny-mink-of-management/input/public/images/1277.jpg +0 -0
  204. package/workspaces/0-skinny-mink-of-management/input/public/images/1278.jpg +0 -0
  205. package/workspaces/0-skinny-mink-of-management/input/public/images/1281.jpg +0 -0
  206. package/workspaces/0-skinny-mink-of-management/input/public/images/1282.jpg +0 -0
  207. package/workspaces/0-skinny-mink-of-management/input/public/images/1283.jpg +0 -0
  208. package/workspaces/0-skinny-mink-of-management/input/public/images/1284.jpg +0 -0
  209. package/workspaces/0-skinny-mink-of-management/input/public/images/1286.jpg +0 -0
  210. package/workspaces/0-skinny-mink-of-management/input/public/images/1287.jpg +0 -0
  211. package/workspaces/0-skinny-mink-of-management/input/public/images/1289.jpg +0 -0
  212. package/workspaces/0-skinny-mink-of-management/input/public/images/129.jpg +0 -0
  213. package/workspaces/0-skinny-mink-of-management/input/public/images/1291.jpg +0 -0
  214. package/workspaces/0-skinny-mink-of-management/input/public/images/1292.jpg +0 -0
  215. package/workspaces/0-skinny-mink-of-management/input/public/images/1294.jpg +0 -0
  216. package/workspaces/0-skinny-mink-of-management/input/public/images/1296.jpg +0 -0
  217. package/workspaces/0-skinny-mink-of-management/input/public/images/1299.jpg +0 -0
  218. package/workspaces/0-skinny-mink-of-management/input/public/images/130.jpg +0 -0
  219. package/workspaces/0-skinny-mink-of-management/input/public/images/1300.jpg +0 -0
  220. package/workspaces/0-skinny-mink-of-management/input/public/images/1301.jpg +0 -0
  221. package/workspaces/0-skinny-mink-of-management/input/public/images/1302.jpg +0 -0
  222. package/workspaces/0-skinny-mink-of-management/input/public/images/1305.jpg +0 -0
  223. package/workspaces/0-skinny-mink-of-management/input/public/images/1308.jpg +0 -0
  224. package/workspaces/0-skinny-mink-of-management/input/public/images/1309.jpg +0 -0
  225. package/workspaces/0-skinny-mink-of-management/input/public/images/1310.jpg +0 -0
  226. package/workspaces/0-skinny-mink-of-management/input/public/images/1311.jpg +0 -0
  227. package/workspaces/0-skinny-mink-of-management/input/public/images/1312.jpg +0 -0
  228. package/workspaces/0-skinny-mink-of-management/input/public/images/1317.jpg +0 -0
  229. package/workspaces/0-skinny-mink-of-management/input/public/images/1319.jpg +0 -0
  230. package/workspaces/0-skinny-mink-of-management/input/public/images/132.jpg +0 -0
  231. package/workspaces/0-skinny-mink-of-management/input/public/images/1320.jpg +0 -0
  232. package/workspaces/0-skinny-mink-of-management/input/public/images/1322.jpg +0 -0
  233. package/workspaces/0-skinny-mink-of-management/input/public/images/1323.jpg +0 -0
  234. package/workspaces/0-skinny-mink-of-management/input/public/images/1324.jpg +0 -0
  235. package/workspaces/0-skinny-mink-of-management/input/public/images/1325.jpg +0 -0
  236. package/workspaces/0-skinny-mink-of-management/input/public/images/1326.jpg +0 -0
  237. package/workspaces/0-skinny-mink-of-management/input/public/images/1327.jpg +0 -0
  238. package/workspaces/0-skinny-mink-of-management/input/public/images/1328.jpg +0 -0
  239. package/workspaces/0-skinny-mink-of-management/input/public/images/1329.jpg +0 -0
  240. package/workspaces/0-skinny-mink-of-management/input/public/images/133.jpg +0 -0
  241. package/workspaces/0-skinny-mink-of-management/input/public/images/1330.jpg +0 -0
  242. package/workspaces/0-skinny-mink-of-management/input/public/images/1335.jpg +0 -0
  243. package/workspaces/0-skinny-mink-of-management/input/public/images/1337.jpg +0 -0
  244. package/workspaces/0-skinny-mink-of-management/input/public/images/1339.jpg +0 -0
  245. package/workspaces/0-skinny-mink-of-management/input/public/images/134.jpg +0 -0
  246. package/workspaces/0-skinny-mink-of-management/input/public/images/1340.jpg +0 -0
  247. package/workspaces/0-skinny-mink-of-management/input/public/images/1341.jpg +0 -0
  248. package/workspaces/0-skinny-mink-of-management/input/public/images/1342.jpg +0 -0
  249. package/workspaces/0-skinny-mink-of-management/input/public/images/1344.jpg +0 -0
  250. package/workspaces/0-skinny-mink-of-management/input/public/images/1345.jpg +0 -0
  251. package/workspaces/0-skinny-mink-of-management/input/public/images/1346.jpg +0 -0
  252. package/workspaces/0-skinny-mink-of-management/input/public/images/1347.jpg +0 -0
  253. package/workspaces/0-skinny-mink-of-management/input/public/images/1348.jpg +0 -0
  254. package/workspaces/0-skinny-mink-of-management/input/public/images/1349.jpg +0 -0
  255. package/workspaces/0-skinny-mink-of-management/input/public/images/1350.jpg +0 -0
  256. package/workspaces/0-skinny-mink-of-management/input/public/images/1352.jpg +0 -0
  257. package/workspaces/0-skinny-mink-of-management/input/public/images/1353.jpg +0 -0
  258. package/workspaces/0-skinny-mink-of-management/input/public/images/1355.jpg +0 -0
  259. package/workspaces/0-skinny-mink-of-management/input/public/images/1356.jpg +0 -0
  260. package/workspaces/0-skinny-mink-of-management/input/public/images/1358.jpg +0 -0
  261. package/workspaces/0-skinny-mink-of-management/input/public/images/1359.jpg +0 -0
  262. package/workspaces/0-skinny-mink-of-management/input/public/images/1360.jpg +0 -0
  263. package/workspaces/0-skinny-mink-of-management/input/public/images/1365.jpg +0 -0
  264. package/workspaces/0-skinny-mink-of-management/input/public/images/1366.jpg +0 -0
  265. package/workspaces/0-skinny-mink-of-management/input/public/images/1367.jpg +0 -0
  266. package/workspaces/0-skinny-mink-of-management/input/public/images/1370.jpg +0 -0
  267. package/workspaces/0-skinny-mink-of-management/input/public/images/1372.jpg +0 -0
  268. package/workspaces/0-skinny-mink-of-management/input/public/images/1373.jpg +0 -0
  269. package/workspaces/0-skinny-mink-of-management/input/public/images/1374.jpg +0 -0
  270. package/workspaces/0-skinny-mink-of-management/input/public/images/1375.jpg +0 -0
  271. package/workspaces/0-skinny-mink-of-management/input/public/images/1377.jpg +0 -0
  272. package/workspaces/0-skinny-mink-of-management/input/public/images/1378.jpg +0 -0
  273. package/workspaces/0-skinny-mink-of-management/input/public/images/1379.jpg +0 -0
  274. package/workspaces/0-skinny-mink-of-management/input/public/images/1380.jpg +0 -0
  275. package/workspaces/0-skinny-mink-of-management/input/public/images/1381.jpg +0 -0
  276. package/workspaces/0-skinny-mink-of-management/input/public/images/1384.jpg +0 -0
  277. package/workspaces/0-skinny-mink-of-management/input/public/images/1386.jpg +0 -0
  278. package/workspaces/0-skinny-mink-of-management/input/public/images/1388.jpg +0 -0
  279. package/workspaces/0-skinny-mink-of-management/input/public/images/139.jpg +0 -0
  280. package/workspaces/0-skinny-mink-of-management/input/public/images/1390.jpg +0 -0
  281. package/workspaces/0-skinny-mink-of-management/input/public/images/1391.jpg +0 -0
  282. package/workspaces/0-skinny-mink-of-management/input/public/images/1392.jpg +0 -0
  283. package/workspaces/0-skinny-mink-of-management/input/public/images/1393.jpg +0 -0
  284. package/workspaces/0-skinny-mink-of-management/input/public/images/1394.jpg +0 -0
  285. package/workspaces/0-skinny-mink-of-management/input/public/images/1395.jpg +0 -0
  286. package/workspaces/0-skinny-mink-of-management/input/public/images/1396.jpg +0 -0
  287. package/workspaces/0-skinny-mink-of-management/input/public/images/1398.jpg +0 -0
  288. package/workspaces/0-skinny-mink-of-management/input/public/images/1399.jpg +0 -0
  289. package/workspaces/0-skinny-mink-of-management/input/public/images/14.jpg +0 -0
  290. package/workspaces/0-skinny-mink-of-management/input/public/images/140.jpg +0 -0
  291. package/workspaces/0-skinny-mink-of-management/input/public/images/1402.jpg +0 -0
  292. package/workspaces/0-skinny-mink-of-management/input/public/images/1403.jpg +0 -0
  293. package/workspaces/0-skinny-mink-of-management/input/public/images/1405.jpg +0 -0
  294. package/workspaces/0-skinny-mink-of-management/input/public/images/1408.jpg +0 -0
  295. package/workspaces/0-skinny-mink-of-management/input/public/images/1410.jpg +0 -0
  296. package/workspaces/0-skinny-mink-of-management/input/public/images/1411.jpg +0 -0
  297. package/workspaces/0-skinny-mink-of-management/input/public/images/1413.jpg +0 -0
  298. package/workspaces/0-skinny-mink-of-management/input/public/images/1414.jpg +0 -0
  299. package/workspaces/0-skinny-mink-of-management/input/public/images/1417.jpg +0 -0
  300. package/workspaces/0-skinny-mink-of-management/input/public/images/1419.jpg +0 -0
  301. package/workspaces/0-skinny-mink-of-management/input/public/images/142.jpg +0 -0
  302. package/workspaces/0-skinny-mink-of-management/input/public/images/1420.jpg +0 -0
  303. package/workspaces/0-skinny-mink-of-management/input/public/images/1423.jpg +0 -0
  304. package/workspaces/0-skinny-mink-of-management/input/public/images/1424.jpg +0 -0
  305. package/workspaces/0-skinny-mink-of-management/input/public/images/1425.jpg +0 -0
  306. package/workspaces/0-skinny-mink-of-management/input/public/images/143.jpg +0 -0
  307. package/workspaces/0-skinny-mink-of-management/input/public/images/1431.jpg +0 -0
  308. package/workspaces/0-skinny-mink-of-management/input/public/images/1432.jpg +0 -0
  309. package/workspaces/0-skinny-mink-of-management/input/public/images/1435.jpg +0 -0
  310. package/workspaces/0-skinny-mink-of-management/input/public/images/1436.jpg +0 -0
  311. package/workspaces/0-skinny-mink-of-management/input/public/images/1438.jpg +0 -0
  312. package/workspaces/0-skinny-mink-of-management/input/public/images/1440.jpg +0 -0
  313. package/workspaces/0-skinny-mink-of-management/input/public/images/1441.jpg +0 -0
  314. package/workspaces/0-skinny-mink-of-management/input/public/images/1442.jpg +0 -0
  315. package/workspaces/0-skinny-mink-of-management/input/public/images/1443.jpg +0 -0
  316. package/workspaces/0-skinny-mink-of-management/input/public/images/1444.jpg +0 -0
  317. package/workspaces/0-skinny-mink-of-management/input/public/images/1446.jpg +0 -0
  318. package/workspaces/0-skinny-mink-of-management/input/public/images/1448.jpg +0 -0
  319. package/workspaces/0-skinny-mink-of-management/input/public/images/1449.jpg +0 -0
  320. package/workspaces/0-skinny-mink-of-management/input/public/images/145.jpg +0 -0
  321. package/workspaces/0-skinny-mink-of-management/input/public/images/1450.jpg +0 -0
  322. package/workspaces/0-skinny-mink-of-management/input/public/images/1452.jpg +0 -0
  323. package/workspaces/0-skinny-mink-of-management/input/public/images/1454.jpg +0 -0
  324. package/workspaces/0-skinny-mink-of-management/input/public/images/1457.jpg +0 -0
  325. package/workspaces/0-skinny-mink-of-management/input/public/images/1459.jpg +0 -0
  326. package/workspaces/0-skinny-mink-of-management/input/public/images/146.jpg +0 -0
  327. package/workspaces/0-skinny-mink-of-management/input/public/images/1460.jpg +0 -0
  328. package/workspaces/0-skinny-mink-of-management/input/public/images/1461.jpg +0 -0
  329. package/workspaces/0-skinny-mink-of-management/input/public/images/1463.jpg +0 -0
  330. package/workspaces/0-skinny-mink-of-management/input/public/images/1467.jpg +0 -0
  331. package/workspaces/0-skinny-mink-of-management/input/public/images/1468.jpg +0 -0
  332. package/workspaces/0-skinny-mink-of-management/input/public/images/1469.jpg +0 -0
  333. package/workspaces/0-skinny-mink-of-management/input/public/images/1471.jpg +0 -0
  334. package/workspaces/0-skinny-mink-of-management/input/public/images/1472.jpg +0 -0
  335. package/workspaces/0-skinny-mink-of-management/input/public/images/1473.jpg +0 -0
  336. package/workspaces/0-skinny-mink-of-management/input/public/images/1474.jpg +0 -0
  337. package/workspaces/0-skinny-mink-of-management/input/public/images/1475.jpg +0 -0
  338. package/workspaces/0-skinny-mink-of-management/input/public/images/1476.jpg +0 -0
  339. package/workspaces/0-skinny-mink-of-management/input/public/images/1477.jpg +0 -0
  340. package/workspaces/0-skinny-mink-of-management/input/public/images/1479.jpg +0 -0
  341. package/workspaces/0-skinny-mink-of-management/input/public/images/148.jpg +0 -0
  342. package/workspaces/0-skinny-mink-of-management/input/public/images/1480.jpg +0 -0
  343. package/workspaces/0-skinny-mink-of-management/input/public/images/1482.jpg +0 -0
  344. package/workspaces/0-skinny-mink-of-management/input/public/images/1483.jpg +0 -0
  345. package/workspaces/0-skinny-mink-of-management/input/public/images/1488.jpg +0 -0
  346. package/workspaces/0-skinny-mink-of-management/input/public/images/149.jpg +0 -0
  347. package/workspaces/0-skinny-mink-of-management/input/public/images/1491.jpg +0 -0
  348. package/workspaces/0-skinny-mink-of-management/input/public/images/1492.jpg +0 -0
  349. package/workspaces/0-skinny-mink-of-management/input/public/images/1494.jpg +0 -0
  350. package/workspaces/0-skinny-mink-of-management/input/public/images/1496.jpg +0 -0
  351. package/workspaces/0-skinny-mink-of-management/input/public/images/1499.jpg +0 -0
  352. package/workspaces/0-skinny-mink-of-management/input/public/images/15.jpg +0 -0
  353. package/workspaces/0-skinny-mink-of-management/input/public/images/1500.jpg +0 -0
  354. package/workspaces/0-skinny-mink-of-management/input/public/images/1501.jpg +0 -0
  355. package/workspaces/0-skinny-mink-of-management/input/public/images/1502.jpg +0 -0
  356. package/workspaces/0-skinny-mink-of-management/input/public/images/1504.jpg +0 -0
  357. package/workspaces/0-skinny-mink-of-management/input/public/images/1505.jpg +0 -0
  358. package/workspaces/0-skinny-mink-of-management/input/public/images/1506.jpg +0 -0
  359. package/workspaces/0-skinny-mink-of-management/input/public/images/1507.jpg +0 -0
  360. package/workspaces/0-skinny-mink-of-management/input/public/images/1508.jpg +0 -0
  361. package/workspaces/0-skinny-mink-of-management/input/public/images/1509.jpg +0 -0
  362. package/workspaces/0-skinny-mink-of-management/input/public/images/1511.jpg +0 -0
  363. package/workspaces/0-skinny-mink-of-management/input/public/images/1512.jpg +0 -0
  364. package/workspaces/0-skinny-mink-of-management/input/public/images/1514.jpg +0 -0
  365. package/workspaces/0-skinny-mink-of-management/input/public/images/1515.jpg +0 -0
  366. package/workspaces/0-skinny-mink-of-management/input/public/images/1516.jpg +0 -0
  367. package/workspaces/0-skinny-mink-of-management/input/public/images/1518.jpg +0 -0
  368. package/workspaces/0-skinny-mink-of-management/input/public/images/1519.jpg +0 -0
  369. package/workspaces/0-skinny-mink-of-management/input/public/images/152.jpg +0 -0
  370. package/workspaces/0-skinny-mink-of-management/input/public/images/1520.jpg +0 -0
  371. package/workspaces/0-skinny-mink-of-management/input/public/images/1521.jpg +0 -0
  372. package/workspaces/0-skinny-mink-of-management/input/public/images/1523.jpg +0 -0
  373. package/workspaces/0-skinny-mink-of-management/input/public/images/1524.jpg +0 -0
  374. package/workspaces/0-skinny-mink-of-management/input/public/images/1525.jpg +0 -0
  375. package/workspaces/0-skinny-mink-of-management/input/public/images/1527.jpg +0 -0
  376. package/workspaces/0-skinny-mink-of-management/input/public/images/1529.jpg +0 -0
  377. package/workspaces/0-skinny-mink-of-management/input/public/images/153.jpg +0 -0
  378. package/workspaces/0-skinny-mink-of-management/input/public/images/1530.jpg +0 -0
  379. package/workspaces/0-skinny-mink-of-management/input/public/images/1531.jpg +0 -0
  380. package/workspaces/0-skinny-mink-of-management/input/public/images/1532.jpg +0 -0
  381. package/workspaces/0-skinny-mink-of-management/input/public/images/1536.jpg +0 -0
  382. package/workspaces/0-skinny-mink-of-management/input/public/images/1538.jpg +0 -0
  383. package/workspaces/0-skinny-mink-of-management/input/public/images/1539.jpg +0 -0
  384. package/workspaces/0-skinny-mink-of-management/input/public/images/1541.jpg +0 -0
  385. package/workspaces/0-skinny-mink-of-management/input/public/images/1543.jpg +0 -0
  386. package/workspaces/0-skinny-mink-of-management/input/public/images/1544.jpg +0 -0
  387. package/workspaces/0-skinny-mink-of-management/input/public/images/1545.jpg +0 -0
  388. package/workspaces/0-skinny-mink-of-management/input/public/images/1547.jpg +0 -0
  389. package/workspaces/0-skinny-mink-of-management/input/public/images/1548.jpg +0 -0
  390. package/workspaces/0-skinny-mink-of-management/input/public/images/1549.jpg +0 -0
  391. package/workspaces/0-skinny-mink-of-management/input/public/images/155.jpg +0 -0
  392. package/workspaces/0-skinny-mink-of-management/input/public/images/1550.jpg +0 -0
  393. package/workspaces/0-skinny-mink-of-management/input/public/images/1551.jpg +0 -0
  394. package/workspaces/0-skinny-mink-of-management/input/public/images/1552.jpg +0 -0
  395. package/workspaces/0-skinny-mink-of-management/input/public/images/1554.jpg +0 -0
  396. package/workspaces/0-skinny-mink-of-management/input/public/images/1555.jpg +0 -0
  397. package/workspaces/0-skinny-mink-of-management/input/public/images/1556.jpg +0 -0
  398. package/workspaces/0-skinny-mink-of-management/input/public/images/1557.jpg +0 -0
  399. package/workspaces/0-skinny-mink-of-management/input/public/images/1559.jpg +0 -0
  400. package/workspaces/0-skinny-mink-of-management/input/public/images/1561.jpg +0 -0
  401. package/workspaces/0-skinny-mink-of-management/input/public/images/1562.jpg +0 -0
  402. package/workspaces/0-skinny-mink-of-management/input/public/images/1563.jpg +0 -0
  403. package/workspaces/0-skinny-mink-of-management/input/public/images/1566.jpg +0 -0
  404. package/workspaces/0-skinny-mink-of-management/input/public/images/1568.jpg +0 -0
  405. package/workspaces/0-skinny-mink-of-management/input/public/images/1569.jpg +0 -0
  406. package/workspaces/0-skinny-mink-of-management/input/public/images/1570.jpg +0 -0
  407. package/workspaces/0-skinny-mink-of-management/input/public/images/1571.jpg +0 -0
  408. package/workspaces/0-skinny-mink-of-management/input/public/images/1572.jpg +0 -0
  409. package/workspaces/0-skinny-mink-of-management/input/public/images/1574.jpg +0 -0
  410. package/workspaces/0-skinny-mink-of-management/input/public/images/1575.jpg +0 -0
  411. package/workspaces/0-skinny-mink-of-management/input/public/images/1578.jpg +0 -0
  412. package/workspaces/0-skinny-mink-of-management/input/public/images/1581.jpg +0 -0
  413. package/workspaces/0-skinny-mink-of-management/input/public/images/1582.jpg +0 -0
  414. package/workspaces/0-skinny-mink-of-management/input/public/images/1584.jpg +0 -0
  415. package/workspaces/0-skinny-mink-of-management/input/public/images/160.jpg +0 -0
  416. package/workspaces/0-skinny-mink-of-management/input/public/images/163.jpg +0 -0
  417. package/workspaces/0-skinny-mink-of-management/input/public/images/164.jpg +0 -0
  418. package/workspaces/0-skinny-mink-of-management/input/public/images/165.jpg +0 -0
  419. package/workspaces/0-skinny-mink-of-management/input/public/images/166.jpg +0 -0
  420. package/workspaces/0-skinny-mink-of-management/input/public/images/167.jpg +0 -0
  421. package/workspaces/0-skinny-mink-of-management/input/public/images/168.jpg +0 -0
  422. package/workspaces/0-skinny-mink-of-management/input/public/images/169.jpg +0 -0
  423. package/workspaces/0-skinny-mink-of-management/input/public/images/17.jpg +0 -0
  424. package/workspaces/0-skinny-mink-of-management/input/public/images/171.jpg +0 -0
  425. package/workspaces/0-skinny-mink-of-management/input/public/images/173.jpg +0 -0
  426. package/workspaces/0-skinny-mink-of-management/input/public/images/175.jpg +0 -0
  427. package/workspaces/0-skinny-mink-of-management/input/public/images/178.jpg +0 -0
  428. package/workspaces/0-skinny-mink-of-management/input/public/images/179.jpg +0 -0
  429. package/workspaces/0-skinny-mink-of-management/input/public/images/18.jpg +0 -0
  430. package/workspaces/0-skinny-mink-of-management/input/public/images/183.jpg +0 -0
  431. package/workspaces/0-skinny-mink-of-management/input/public/images/186.jpg +0 -0
  432. package/workspaces/0-skinny-mink-of-management/input/public/images/188.jpg +0 -0
  433. package/workspaces/0-skinny-mink-of-management/input/public/images/189.jpg +0 -0
  434. package/workspaces/0-skinny-mink-of-management/input/public/images/190.jpg +0 -0
  435. package/workspaces/0-skinny-mink-of-management/input/public/images/194.jpg +0 -0
  436. package/workspaces/0-skinny-mink-of-management/input/public/images/196.jpg +0 -0
  437. package/workspaces/0-skinny-mink-of-management/input/public/images/198.jpg +0 -0
  438. package/workspaces/0-skinny-mink-of-management/input/public/images/199.jpg +0 -0
  439. package/workspaces/0-skinny-mink-of-management/input/public/images/2.jpg +0 -0
  440. package/workspaces/0-skinny-mink-of-management/input/public/images/20.jpg +0 -0
  441. package/workspaces/0-skinny-mink-of-management/input/public/images/201.jpg +0 -0
  442. package/workspaces/0-skinny-mink-of-management/input/public/images/202.jpg +0 -0
  443. package/workspaces/0-skinny-mink-of-management/input/public/images/203.jpg +0 -0
  444. package/workspaces/0-skinny-mink-of-management/input/public/images/204.jpg +0 -0
  445. package/workspaces/0-skinny-mink-of-management/input/public/images/206.jpg +0 -0
  446. package/workspaces/0-skinny-mink-of-management/input/public/images/21.jpg +0 -0
  447. package/workspaces/0-skinny-mink-of-management/input/public/images/211.jpg +0 -0
  448. package/workspaces/0-skinny-mink-of-management/input/public/images/212.jpg +0 -0
  449. package/workspaces/0-skinny-mink-of-management/input/public/images/214.jpg +0 -0
  450. package/workspaces/0-skinny-mink-of-management/input/public/images/215.jpg +0 -0
  451. package/workspaces/0-skinny-mink-of-management/input/public/images/216.jpg +0 -0
  452. package/workspaces/0-skinny-mink-of-management/input/public/images/217.jpg +0 -0
  453. package/workspaces/0-skinny-mink-of-management/input/public/images/218.jpg +0 -0
  454. package/workspaces/0-skinny-mink-of-management/input/public/images/219.jpg +0 -0
  455. package/workspaces/0-skinny-mink-of-management/input/public/images/22.jpg +0 -0
  456. package/workspaces/0-skinny-mink-of-management/input/public/images/224.jpg +0 -0
  457. package/workspaces/0-skinny-mink-of-management/input/public/images/225.jpg +0 -0
  458. package/workspaces/0-skinny-mink-of-management/input/public/images/227.jpg +0 -0
  459. package/workspaces/0-skinny-mink-of-management/input/public/images/228.jpg +0 -0
  460. package/workspaces/0-skinny-mink-of-management/input/public/images/231.jpg +0 -0
  461. package/workspaces/0-skinny-mink-of-management/input/public/images/233.jpg +0 -0
  462. package/workspaces/0-skinny-mink-of-management/input/public/images/235.jpg +0 -0
  463. package/workspaces/0-skinny-mink-of-management/input/public/images/237.jpg +0 -0
  464. package/workspaces/0-skinny-mink-of-management/input/public/images/238.jpg +0 -0
  465. package/workspaces/0-skinny-mink-of-management/input/public/images/239.jpg +0 -0
  466. package/workspaces/0-skinny-mink-of-management/input/public/images/240.jpg +0 -0
  467. package/workspaces/0-skinny-mink-of-management/input/public/images/241.jpg +0 -0
  468. package/workspaces/0-skinny-mink-of-management/input/public/images/242.jpg +0 -0
  469. package/workspaces/0-skinny-mink-of-management/input/public/images/243.jpg +0 -0
  470. package/workspaces/0-skinny-mink-of-management/input/public/images/245.jpg +0 -0
  471. package/workspaces/0-skinny-mink-of-management/input/public/images/246.jpg +0 -0
  472. package/workspaces/0-skinny-mink-of-management/input/public/images/247.jpg +0 -0
  473. package/workspaces/0-skinny-mink-of-management/input/public/images/248.jpg +0 -0
  474. package/workspaces/0-skinny-mink-of-management/input/public/images/249.jpg +0 -0
  475. package/workspaces/0-skinny-mink-of-management/input/public/images/25.jpg +0 -0
  476. package/workspaces/0-skinny-mink-of-management/input/public/images/252.jpg +0 -0
  477. package/workspaces/0-skinny-mink-of-management/input/public/images/253.jpg +0 -0
  478. package/workspaces/0-skinny-mink-of-management/input/public/images/256.jpg +0 -0
  479. package/workspaces/0-skinny-mink-of-management/input/public/images/257.jpg +0 -0
  480. package/workspaces/0-skinny-mink-of-management/input/public/images/258.jpg +0 -0
  481. package/workspaces/0-skinny-mink-of-management/input/public/images/259.jpg +0 -0
  482. package/workspaces/0-skinny-mink-of-management/input/public/images/26.jpg +0 -0
  483. package/workspaces/0-skinny-mink-of-management/input/public/images/260.jpg +0 -0
  484. package/workspaces/0-skinny-mink-of-management/input/public/images/262.jpg +0 -0
  485. package/workspaces/0-skinny-mink-of-management/input/public/images/263.jpg +0 -0
  486. package/workspaces/0-skinny-mink-of-management/input/public/images/265.jpg +0 -0
  487. package/workspaces/0-skinny-mink-of-management/input/public/images/267.jpg +0 -0
  488. package/workspaces/0-skinny-mink-of-management/input/public/images/268.jpg +0 -0
  489. package/workspaces/0-skinny-mink-of-management/input/public/images/269.jpg +0 -0
  490. package/workspaces/0-skinny-mink-of-management/input/public/images/27.jpg +0 -0
  491. package/workspaces/0-skinny-mink-of-management/input/public/images/270.jpg +0 -0
  492. package/workspaces/0-skinny-mink-of-management/input/public/images/273.jpg +0 -0
  493. package/workspaces/0-skinny-mink-of-management/input/public/images/275.jpg +0 -0
  494. package/workspaces/0-skinny-mink-of-management/input/public/images/278.jpg +0 -0
  495. package/workspaces/0-skinny-mink-of-management/input/public/images/280.jpg +0 -0
  496. package/workspaces/0-skinny-mink-of-management/input/public/images/282.jpg +0 -0
  497. package/workspaces/0-skinny-mink-of-management/input/public/images/283.jpg +0 -0
  498. package/workspaces/0-skinny-mink-of-management/input/public/images/286.jpg +0 -0
  499. package/workspaces/0-skinny-mink-of-management/input/public/images/288.jpg +0 -0
  500. package/workspaces/0-skinny-mink-of-management/input/public/images/289.jpg +0 -0
  501. package/workspaces/0-skinny-mink-of-management/input/public/images/29.jpg +0 -0
  502. package/workspaces/0-skinny-mink-of-management/input/public/images/290.jpg +0 -0
  503. package/workspaces/0-skinny-mink-of-management/input/public/images/291.jpg +0 -0
  504. package/workspaces/0-skinny-mink-of-management/input/public/images/294.jpg +0 -0
  505. package/workspaces/0-skinny-mink-of-management/input/public/images/298.jpg +0 -0
  506. package/workspaces/0-skinny-mink-of-management/input/public/images/3.jpg +0 -0
  507. package/workspaces/0-skinny-mink-of-management/input/public/images/30.jpg +0 -0
  508. package/workspaces/0-skinny-mink-of-management/input/public/images/302.jpg +0 -0
  509. package/workspaces/0-skinny-mink-of-management/input/public/images/303.jpg +0 -0
  510. package/workspaces/0-skinny-mink-of-management/input/public/images/304.jpg +0 -0
  511. package/workspaces/0-skinny-mink-of-management/input/public/images/306.jpg +0 -0
  512. package/workspaces/0-skinny-mink-of-management/input/public/images/307.jpg +0 -0
  513. package/workspaces/0-skinny-mink-of-management/input/public/images/309.jpg +0 -0
  514. package/workspaces/0-skinny-mink-of-management/input/public/images/31.jpg +0 -0
  515. package/workspaces/0-skinny-mink-of-management/input/public/images/310.jpg +0 -0
  516. package/workspaces/0-skinny-mink-of-management/input/public/images/311.jpg +0 -0
  517. package/workspaces/0-skinny-mink-of-management/input/public/images/314.jpg +0 -0
  518. package/workspaces/0-skinny-mink-of-management/input/public/images/315.jpg +0 -0
  519. package/workspaces/0-skinny-mink-of-management/input/public/images/317.jpg +0 -0
  520. package/workspaces/0-skinny-mink-of-management/input/public/images/319.jpg +0 -0
  521. package/workspaces/0-skinny-mink-of-management/input/public/images/32.jpg +0 -0
  522. package/workspaces/0-skinny-mink-of-management/input/public/images/321.jpg +0 -0
  523. package/workspaces/0-skinny-mink-of-management/input/public/images/322.jpg +0 -0
  524. package/workspaces/0-skinny-mink-of-management/input/public/images/323.jpg +0 -0
  525. package/workspaces/0-skinny-mink-of-management/input/public/images/324.jpg +0 -0
  526. package/workspaces/0-skinny-mink-of-management/input/public/images/325.jpg +0 -0
  527. package/workspaces/0-skinny-mink-of-management/input/public/images/326.jpg +0 -0
  528. package/workspaces/0-skinny-mink-of-management/input/public/images/327.jpg +0 -0
  529. package/workspaces/0-skinny-mink-of-management/input/public/images/328.jpg +0 -0
  530. package/workspaces/0-skinny-mink-of-management/input/public/images/329.jpg +0 -0
  531. package/workspaces/0-skinny-mink-of-management/input/public/images/330.jpg +0 -0
  532. package/workspaces/0-skinny-mink-of-management/input/public/images/331.jpg +0 -0
  533. package/workspaces/0-skinny-mink-of-management/input/public/images/333.jpg +0 -0
  534. package/workspaces/0-skinny-mink-of-management/input/public/images/334.jpg +0 -0
  535. package/workspaces/0-skinny-mink-of-management/input/public/images/335.jpg +0 -0
  536. package/workspaces/0-skinny-mink-of-management/input/public/images/336.jpg +0 -0
  537. package/workspaces/0-skinny-mink-of-management/input/public/images/338.jpg +0 -0
  538. package/workspaces/0-skinny-mink-of-management/input/public/images/339.jpg +0 -0
  539. package/workspaces/0-skinny-mink-of-management/input/public/images/34.jpg +0 -0
  540. package/workspaces/0-skinny-mink-of-management/input/public/images/340.jpg +0 -0
  541. package/workspaces/0-skinny-mink-of-management/input/public/images/341.jpg +0 -0
  542. package/workspaces/0-skinny-mink-of-management/input/public/images/342.jpg +0 -0
  543. package/workspaces/0-skinny-mink-of-management/input/public/images/344.jpg +0 -0
  544. package/workspaces/0-skinny-mink-of-management/input/public/images/345.jpg +0 -0
  545. package/workspaces/0-skinny-mink-of-management/input/public/images/348.jpg +0 -0
  546. package/workspaces/0-skinny-mink-of-management/input/public/images/349.jpg +0 -0
  547. package/workspaces/0-skinny-mink-of-management/input/public/images/35.jpg +0 -0
  548. package/workspaces/0-skinny-mink-of-management/input/public/images/350.jpg +0 -0
  549. package/workspaces/0-skinny-mink-of-management/input/public/images/354.jpg +0 -0
  550. package/workspaces/0-skinny-mink-of-management/input/public/images/355.jpg +0 -0
  551. package/workspaces/0-skinny-mink-of-management/input/public/images/356.jpg +0 -0
  552. package/workspaces/0-skinny-mink-of-management/input/public/images/357.jpg +0 -0
  553. package/workspaces/0-skinny-mink-of-management/input/public/images/358.jpg +0 -0
  554. package/workspaces/0-skinny-mink-of-management/input/public/images/360.jpg +0 -0
  555. package/workspaces/0-skinny-mink-of-management/input/public/images/362.jpg +0 -0
  556. package/workspaces/0-skinny-mink-of-management/input/public/images/363.jpg +0 -0
  557. package/workspaces/0-skinny-mink-of-management/input/public/images/364.jpg +0 -0
  558. package/workspaces/0-skinny-mink-of-management/input/public/images/365.jpg +0 -0
  559. package/workspaces/0-skinny-mink-of-management/input/public/images/366.jpg +0 -0
  560. package/workspaces/0-skinny-mink-of-management/input/public/images/367.jpg +0 -0
  561. package/workspaces/0-skinny-mink-of-management/input/public/images/369.jpg +0 -0
  562. package/workspaces/0-skinny-mink-of-management/input/public/images/37.jpg +0 -0
  563. package/workspaces/0-skinny-mink-of-management/input/public/images/371.jpg +0 -0
  564. package/workspaces/0-skinny-mink-of-management/input/public/images/374.jpg +0 -0
  565. package/workspaces/0-skinny-mink-of-management/input/public/images/375.jpg +0 -0
  566. package/workspaces/0-skinny-mink-of-management/input/public/images/376.jpg +0 -0
  567. package/workspaces/0-skinny-mink-of-management/input/public/images/377.jpg +0 -0
  568. package/workspaces/0-skinny-mink-of-management/input/public/images/379.jpg +0 -0
  569. package/workspaces/0-skinny-mink-of-management/input/public/images/38.jpg +0 -0
  570. package/workspaces/0-skinny-mink-of-management/input/public/images/380.jpg +0 -0
  571. package/workspaces/0-skinny-mink-of-management/input/public/images/382.jpg +0 -0
  572. package/workspaces/0-skinny-mink-of-management/input/public/images/383.jpg +0 -0
  573. package/workspaces/0-skinny-mink-of-management/input/public/images/386.jpg +0 -0
  574. package/workspaces/0-skinny-mink-of-management/input/public/images/387.jpg +0 -0
  575. package/workspaces/0-skinny-mink-of-management/input/public/images/388.jpg +0 -0
  576. package/workspaces/0-skinny-mink-of-management/input/public/images/389.jpg +0 -0
  577. package/workspaces/0-skinny-mink-of-management/input/public/images/390.jpg +0 -0
  578. package/workspaces/0-skinny-mink-of-management/input/public/images/392.jpg +0 -0
  579. package/workspaces/0-skinny-mink-of-management/input/public/images/393.jpg +0 -0
  580. package/workspaces/0-skinny-mink-of-management/input/public/images/394.jpg +0 -0
  581. package/workspaces/0-skinny-mink-of-management/input/public/images/396.jpg +0 -0
  582. package/workspaces/0-skinny-mink-of-management/input/public/images/397.jpg +0 -0
  583. package/workspaces/0-skinny-mink-of-management/input/public/images/398.jpg +0 -0
  584. package/workspaces/0-skinny-mink-of-management/input/public/images/40.jpg +0 -0
  585. package/workspaces/0-skinny-mink-of-management/input/public/images/404.jpg +0 -0
  586. package/workspaces/0-skinny-mink-of-management/input/public/images/408.jpg +0 -0
  587. package/workspaces/0-skinny-mink-of-management/input/public/images/409.jpg +0 -0
  588. package/workspaces/0-skinny-mink-of-management/input/public/images/410.jpg +0 -0
  589. package/workspaces/0-skinny-mink-of-management/input/public/images/411.jpg +0 -0
  590. package/workspaces/0-skinny-mink-of-management/input/public/images/412.jpg +0 -0
  591. package/workspaces/0-skinny-mink-of-management/input/public/images/413.jpg +0 -0
  592. package/workspaces/0-skinny-mink-of-management/input/public/images/415.jpg +0 -0
  593. package/workspaces/0-skinny-mink-of-management/input/public/images/416.jpg +0 -0
  594. package/workspaces/0-skinny-mink-of-management/input/public/images/417.jpg +0 -0
  595. package/workspaces/0-skinny-mink-of-management/input/public/images/418.jpg +0 -0
  596. package/workspaces/0-skinny-mink-of-management/input/public/images/419.jpg +0 -0
  597. package/workspaces/0-skinny-mink-of-management/input/public/images/42.jpg +0 -0
  598. package/workspaces/0-skinny-mink-of-management/input/public/images/420.jpg +0 -0
  599. package/workspaces/0-skinny-mink-of-management/input/public/images/423.jpg +0 -0
  600. package/workspaces/0-skinny-mink-of-management/input/public/images/425.jpg +0 -0
  601. package/workspaces/0-skinny-mink-of-management/input/public/images/426.jpg +0 -0
  602. package/workspaces/0-skinny-mink-of-management/input/public/images/427.jpg +0 -0
  603. package/workspaces/0-skinny-mink-of-management/input/public/images/428.jpg +0 -0
  604. package/workspaces/0-skinny-mink-of-management/input/public/images/43.jpg +0 -0
  605. package/workspaces/0-skinny-mink-of-management/input/public/images/430.jpg +0 -0
  606. package/workspaces/0-skinny-mink-of-management/input/public/images/431.jpg +0 -0
  607. package/workspaces/0-skinny-mink-of-management/input/public/images/433.jpg +0 -0
  608. package/workspaces/0-skinny-mink-of-management/input/public/images/435.jpg +0 -0
  609. package/workspaces/0-skinny-mink-of-management/input/public/images/436.jpg +0 -0
  610. package/workspaces/0-skinny-mink-of-management/input/public/images/437.jpg +0 -0
  611. package/workspaces/0-skinny-mink-of-management/input/public/images/438.jpg +0 -0
  612. package/workspaces/0-skinny-mink-of-management/input/public/images/440.jpg +0 -0
  613. package/workspaces/0-skinny-mink-of-management/input/public/images/443.jpg +0 -0
  614. package/workspaces/0-skinny-mink-of-management/input/public/images/444.jpg +0 -0
  615. package/workspaces/0-skinny-mink-of-management/input/public/images/445.jpg +0 -0
  616. package/workspaces/0-skinny-mink-of-management/input/public/images/446.jpg +0 -0
  617. package/workspaces/0-skinny-mink-of-management/input/public/images/449.jpg +0 -0
  618. package/workspaces/0-skinny-mink-of-management/input/public/images/45.jpg +0 -0
  619. package/workspaces/0-skinny-mink-of-management/input/public/images/450.jpg +0 -0
  620. package/workspaces/0-skinny-mink-of-management/input/public/images/451.jpg +0 -0
  621. package/workspaces/0-skinny-mink-of-management/input/public/images/452.jpg +0 -0
  622. package/workspaces/0-skinny-mink-of-management/input/public/images/454.jpg +0 -0
  623. package/workspaces/0-skinny-mink-of-management/input/public/images/455.jpg +0 -0
  624. package/workspaces/0-skinny-mink-of-management/input/public/images/456.jpg +0 -0
  625. package/workspaces/0-skinny-mink-of-management/input/public/images/458.jpg +0 -0
  626. package/workspaces/0-skinny-mink-of-management/input/public/images/459.jpg +0 -0
  627. package/workspaces/0-skinny-mink-of-management/input/public/images/460.jpg +0 -0
  628. package/workspaces/0-skinny-mink-of-management/input/public/images/461.jpg +0 -0
  629. package/workspaces/0-skinny-mink-of-management/input/public/images/462.jpg +0 -0
  630. package/workspaces/0-skinny-mink-of-management/input/public/images/463.jpg +0 -0
  631. package/workspaces/0-skinny-mink-of-management/input/public/images/464.jpg +0 -0
  632. package/workspaces/0-skinny-mink-of-management/input/public/images/466.jpg +0 -0
  633. package/workspaces/0-skinny-mink-of-management/input/public/images/467.jpg +0 -0
  634. package/workspaces/0-skinny-mink-of-management/input/public/images/468.jpg +0 -0
  635. package/workspaces/0-skinny-mink-of-management/input/public/images/469.jpg +0 -0
  636. package/workspaces/0-skinny-mink-of-management/input/public/images/470.jpg +0 -0
  637. package/workspaces/0-skinny-mink-of-management/input/public/images/475.jpg +0 -0
  638. package/workspaces/0-skinny-mink-of-management/input/public/images/478.jpg +0 -0
  639. package/workspaces/0-skinny-mink-of-management/input/public/images/48.jpg +0 -0
  640. package/workspaces/0-skinny-mink-of-management/input/public/images/481.jpg +0 -0
  641. package/workspaces/0-skinny-mink-of-management/input/public/images/482.jpg +0 -0
  642. package/workspaces/0-skinny-mink-of-management/input/public/images/485.jpg +0 -0
  643. package/workspaces/0-skinny-mink-of-management/input/public/images/487.jpg +0 -0
  644. package/workspaces/0-skinny-mink-of-management/input/public/images/488.jpg +0 -0
  645. package/workspaces/0-skinny-mink-of-management/input/public/images/489.jpg +0 -0
  646. package/workspaces/0-skinny-mink-of-management/input/public/images/49.jpg +0 -0
  647. package/workspaces/0-skinny-mink-of-management/input/public/images/490.jpg +0 -0
  648. package/workspaces/0-skinny-mink-of-management/input/public/images/491.jpg +0 -0
  649. package/workspaces/0-skinny-mink-of-management/input/public/images/492.jpg +0 -0
  650. package/workspaces/0-skinny-mink-of-management/input/public/images/493.jpg +0 -0
  651. package/workspaces/0-skinny-mink-of-management/input/public/images/494.jpg +0 -0
  652. package/workspaces/0-skinny-mink-of-management/input/public/images/496.jpg +0 -0
  653. package/workspaces/0-skinny-mink-of-management/input/public/images/497.jpg +0 -0
  654. package/workspaces/0-skinny-mink-of-management/input/public/images/498.jpg +0 -0
  655. package/workspaces/0-skinny-mink-of-management/input/public/images/499.jpg +0 -0
  656. package/workspaces/0-skinny-mink-of-management/input/public/images/5.jpg +0 -0
  657. package/workspaces/0-skinny-mink-of-management/input/public/images/50.jpg +0 -0
  658. package/workspaces/0-skinny-mink-of-management/input/public/images/501.jpg +0 -0
  659. package/workspaces/0-skinny-mink-of-management/input/public/images/502.jpg +0 -0
  660. package/workspaces/0-skinny-mink-of-management/input/public/images/505.jpg +0 -0
  661. package/workspaces/0-skinny-mink-of-management/input/public/images/506.jpg +0 -0
  662. package/workspaces/0-skinny-mink-of-management/input/public/images/508.jpg +0 -0
  663. package/workspaces/0-skinny-mink-of-management/input/public/images/510.jpg +0 -0
  664. package/workspaces/0-skinny-mink-of-management/input/public/images/511.jpg +0 -0
  665. package/workspaces/0-skinny-mink-of-management/input/public/images/513.jpg +0 -0
  666. package/workspaces/0-skinny-mink-of-management/input/public/images/514.jpg +0 -0
  667. package/workspaces/0-skinny-mink-of-management/input/public/images/516.jpg +0 -0
  668. package/workspaces/0-skinny-mink-of-management/input/public/images/517.jpg +0 -0
  669. package/workspaces/0-skinny-mink-of-management/input/public/images/519.jpg +0 -0
  670. package/workspaces/0-skinny-mink-of-management/input/public/images/520.jpg +0 -0
  671. package/workspaces/0-skinny-mink-of-management/input/public/images/521.jpg +0 -0
  672. package/workspaces/0-skinny-mink-of-management/input/public/images/522.jpg +0 -0
  673. package/workspaces/0-skinny-mink-of-management/input/public/images/523.jpg +0 -0
  674. package/workspaces/0-skinny-mink-of-management/input/public/images/524.jpg +0 -0
  675. package/workspaces/0-skinny-mink-of-management/input/public/images/528.jpg +0 -0
  676. package/workspaces/0-skinny-mink-of-management/input/public/images/530.jpg +0 -0
  677. package/workspaces/0-skinny-mink-of-management/input/public/images/532.jpg +0 -0
  678. package/workspaces/0-skinny-mink-of-management/input/public/images/535.jpg +0 -0
  679. package/workspaces/0-skinny-mink-of-management/input/public/images/538.jpg +0 -0
  680. package/workspaces/0-skinny-mink-of-management/input/public/images/539.jpg +0 -0
  681. package/workspaces/0-skinny-mink-of-management/input/public/images/54.jpg +0 -0
  682. package/workspaces/0-skinny-mink-of-management/input/public/images/542.jpg +0 -0
  683. package/workspaces/0-skinny-mink-of-management/input/public/images/543.jpg +0 -0
  684. package/workspaces/0-skinny-mink-of-management/input/public/images/545.jpg +0 -0
  685. package/workspaces/0-skinny-mink-of-management/input/public/images/547.jpg +0 -0
  686. package/workspaces/0-skinny-mink-of-management/input/public/images/548.jpg +0 -0
  687. package/workspaces/0-skinny-mink-of-management/input/public/images/55.jpg +0 -0
  688. package/workspaces/0-skinny-mink-of-management/input/public/images/550.jpg +0 -0
  689. package/workspaces/0-skinny-mink-of-management/input/public/images/551.jpg +0 -0
  690. package/workspaces/0-skinny-mink-of-management/input/public/images/552.jpg +0 -0
  691. package/workspaces/0-skinny-mink-of-management/input/public/images/553.jpg +0 -0
  692. package/workspaces/0-skinny-mink-of-management/input/public/images/556.jpg +0 -0
  693. package/workspaces/0-skinny-mink-of-management/input/public/images/558.jpg +0 -0
  694. package/workspaces/0-skinny-mink-of-management/input/public/images/559.jpg +0 -0
  695. package/workspaces/0-skinny-mink-of-management/input/public/images/56.jpg +0 -0
  696. package/workspaces/0-skinny-mink-of-management/input/public/images/561.jpg +0 -0
  697. package/workspaces/0-skinny-mink-of-management/input/public/images/562.jpg +0 -0
  698. package/workspaces/0-skinny-mink-of-management/input/public/images/563.jpg +0 -0
  699. package/workspaces/0-skinny-mink-of-management/input/public/images/564.jpg +0 -0
  700. package/workspaces/0-skinny-mink-of-management/input/public/images/566.jpg +0 -0
  701. package/workspaces/0-skinny-mink-of-management/input/public/images/568.jpg +0 -0
  702. package/workspaces/0-skinny-mink-of-management/input/public/images/569.jpg +0 -0
  703. package/workspaces/0-skinny-mink-of-management/input/public/images/570.jpg +0 -0
  704. package/workspaces/0-skinny-mink-of-management/input/public/images/571.jpg +0 -0
  705. package/workspaces/0-skinny-mink-of-management/input/public/images/572.jpg +0 -0
  706. package/workspaces/0-skinny-mink-of-management/input/public/images/573.jpg +0 -0
  707. package/workspaces/0-skinny-mink-of-management/input/public/images/576.jpg +0 -0
  708. package/workspaces/0-skinny-mink-of-management/input/public/images/58.jpg +0 -0
  709. package/workspaces/0-skinny-mink-of-management/input/public/images/581.jpg +0 -0
  710. package/workspaces/0-skinny-mink-of-management/input/public/images/582.jpg +0 -0
  711. package/workspaces/0-skinny-mink-of-management/input/public/images/585.jpg +0 -0
  712. package/workspaces/0-skinny-mink-of-management/input/public/images/588.jpg +0 -0
  713. package/workspaces/0-skinny-mink-of-management/input/public/images/589.jpg +0 -0
  714. package/workspaces/0-skinny-mink-of-management/input/public/images/592.jpg +0 -0
  715. package/workspaces/0-skinny-mink-of-management/input/public/images/593.jpg +0 -0
  716. package/workspaces/0-skinny-mink-of-management/input/public/images/595.jpg +0 -0
  717. package/workspaces/0-skinny-mink-of-management/input/public/images/596.jpg +0 -0
  718. package/workspaces/0-skinny-mink-of-management/input/public/images/597.jpg +0 -0
  719. package/workspaces/0-skinny-mink-of-management/input/public/images/598.jpg +0 -0
  720. package/workspaces/0-skinny-mink-of-management/input/public/images/6.jpg +0 -0
  721. package/workspaces/0-skinny-mink-of-management/input/public/images/60.jpg +0 -0
  722. package/workspaces/0-skinny-mink-of-management/input/public/images/600.jpg +0 -0
  723. package/workspaces/0-skinny-mink-of-management/input/public/images/601.jpg +0 -0
  724. package/workspaces/0-skinny-mink-of-management/input/public/images/603.jpg +0 -0
  725. package/workspaces/0-skinny-mink-of-management/input/public/images/605.jpg +0 -0
  726. package/workspaces/0-skinny-mink-of-management/input/public/images/606.jpg +0 -0
  727. package/workspaces/0-skinny-mink-of-management/input/public/images/609.jpg +0 -0
  728. package/workspaces/0-skinny-mink-of-management/input/public/images/61.jpg +0 -0
  729. package/workspaces/0-skinny-mink-of-management/input/public/images/610.jpg +0 -0
  730. package/workspaces/0-skinny-mink-of-management/input/public/images/614.jpg +0 -0
  731. package/workspaces/0-skinny-mink-of-management/input/public/images/615.jpg +0 -0
  732. package/workspaces/0-skinny-mink-of-management/input/public/images/616.jpg +0 -0
  733. package/workspaces/0-skinny-mink-of-management/input/public/images/618.jpg +0 -0
  734. package/workspaces/0-skinny-mink-of-management/input/public/images/619.jpg +0 -0
  735. package/workspaces/0-skinny-mink-of-management/input/public/images/620.jpg +0 -0
  736. package/workspaces/0-skinny-mink-of-management/input/public/images/621.jpg +0 -0
  737. package/workspaces/0-skinny-mink-of-management/input/public/images/622.jpg +0 -0
  738. package/workspaces/0-skinny-mink-of-management/input/public/images/623.jpg +0 -0
  739. package/workspaces/0-skinny-mink-of-management/input/public/images/628.jpg +0 -0
  740. package/workspaces/0-skinny-mink-of-management/input/public/images/629.jpg +0 -0
  741. package/workspaces/0-skinny-mink-of-management/input/public/images/63.jpg +0 -0
  742. package/workspaces/0-skinny-mink-of-management/input/public/images/630.jpg +0 -0
  743. package/workspaces/0-skinny-mink-of-management/input/public/images/631.jpg +0 -0
  744. package/workspaces/0-skinny-mink-of-management/input/public/images/632.jpg +0 -0
  745. package/workspaces/0-skinny-mink-of-management/input/public/images/633.jpg +0 -0
  746. package/workspaces/0-skinny-mink-of-management/input/public/images/634.jpg +0 -0
  747. package/workspaces/0-skinny-mink-of-management/input/public/images/635.jpg +0 -0
  748. package/workspaces/0-skinny-mink-of-management/input/public/images/636.jpg +0 -0
  749. package/workspaces/0-skinny-mink-of-management/input/public/images/637.jpg +0 -0
  750. package/workspaces/0-skinny-mink-of-management/input/public/images/64.jpg +0 -0
  751. package/workspaces/0-skinny-mink-of-management/input/public/images/641.jpg +0 -0
  752. package/workspaces/0-skinny-mink-of-management/input/public/images/642.jpg +0 -0
  753. package/workspaces/0-skinny-mink-of-management/input/public/images/645.jpg +0 -0
  754. package/workspaces/0-skinny-mink-of-management/input/public/images/646.jpg +0 -0
  755. package/workspaces/0-skinny-mink-of-management/input/public/images/647.jpg +0 -0
  756. package/workspaces/0-skinny-mink-of-management/input/public/images/649.jpg +0 -0
  757. package/workspaces/0-skinny-mink-of-management/input/public/images/651.jpg +0 -0
  758. package/workspaces/0-skinny-mink-of-management/input/public/images/652.jpg +0 -0
  759. package/workspaces/0-skinny-mink-of-management/input/public/images/654.jpg +0 -0
  760. package/workspaces/0-skinny-mink-of-management/input/public/images/656.jpg +0 -0
  761. package/workspaces/0-skinny-mink-of-management/input/public/images/657.jpg +0 -0
  762. package/workspaces/0-skinny-mink-of-management/input/public/images/66.jpg +0 -0
  763. package/workspaces/0-skinny-mink-of-management/input/public/images/660.jpg +0 -0
  764. package/workspaces/0-skinny-mink-of-management/input/public/images/661.jpg +0 -0
  765. package/workspaces/0-skinny-mink-of-management/input/public/images/662.jpg +0 -0
  766. package/workspaces/0-skinny-mink-of-management/input/public/images/663.jpg +0 -0
  767. package/workspaces/0-skinny-mink-of-management/input/public/images/664.jpg +0 -0
  768. package/workspaces/0-skinny-mink-of-management/input/public/images/667.jpg +0 -0
  769. package/workspaces/0-skinny-mink-of-management/input/public/images/669.jpg +0 -0
  770. package/workspaces/0-skinny-mink-of-management/input/public/images/67.jpg +0 -0
  771. package/workspaces/0-skinny-mink-of-management/input/public/images/671.jpg +0 -0
  772. package/workspaces/0-skinny-mink-of-management/input/public/images/672.jpg +0 -0
  773. package/workspaces/0-skinny-mink-of-management/input/public/images/673.jpg +0 -0
  774. package/workspaces/0-skinny-mink-of-management/input/public/images/675.jpg +0 -0
  775. package/workspaces/0-skinny-mink-of-management/input/public/images/676.jpg +0 -0
  776. package/workspaces/0-skinny-mink-of-management/input/public/images/677.jpg +0 -0
  777. package/workspaces/0-skinny-mink-of-management/input/public/images/678.jpg +0 -0
  778. package/workspaces/0-skinny-mink-of-management/input/public/images/680.jpg +0 -0
  779. package/workspaces/0-skinny-mink-of-management/input/public/images/681.jpg +0 -0
  780. package/workspaces/0-skinny-mink-of-management/input/public/images/682.jpg +0 -0
  781. package/workspaces/0-skinny-mink-of-management/input/public/images/684.jpg +0 -0
  782. package/workspaces/0-skinny-mink-of-management/input/public/images/685.jpg +0 -0
  783. package/workspaces/0-skinny-mink-of-management/input/public/images/689.jpg +0 -0
  784. package/workspaces/0-skinny-mink-of-management/input/public/images/69.jpg +0 -0
  785. package/workspaces/0-skinny-mink-of-management/input/public/images/692.jpg +0 -0
  786. package/workspaces/0-skinny-mink-of-management/input/public/images/693.jpg +0 -0
  787. package/workspaces/0-skinny-mink-of-management/input/public/images/694.jpg +0 -0
  788. package/workspaces/0-skinny-mink-of-management/input/public/images/695.jpg +0 -0
  789. package/workspaces/0-skinny-mink-of-management/input/public/images/697.jpg +0 -0
  790. package/workspaces/0-skinny-mink-of-management/input/public/images/698.jpg +0 -0
  791. package/workspaces/0-skinny-mink-of-management/input/public/images/700.jpg +0 -0
  792. package/workspaces/0-skinny-mink-of-management/input/public/images/704.jpg +0 -0
  793. package/workspaces/0-skinny-mink-of-management/input/public/images/706.jpg +0 -0
  794. package/workspaces/0-skinny-mink-of-management/input/public/images/709.jpg +0 -0
  795. package/workspaces/0-skinny-mink-of-management/input/public/images/71.jpg +0 -0
  796. package/workspaces/0-skinny-mink-of-management/input/public/images/710.jpg +0 -0
  797. package/workspaces/0-skinny-mink-of-management/input/public/images/711.jpg +0 -0
  798. package/workspaces/0-skinny-mink-of-management/input/public/images/712.jpg +0 -0
  799. package/workspaces/0-skinny-mink-of-management/input/public/images/713.jpg +0 -0
  800. package/workspaces/0-skinny-mink-of-management/input/public/images/714.jpg +0 -0
  801. package/workspaces/0-skinny-mink-of-management/input/public/images/716.jpg +0 -0
  802. package/workspaces/0-skinny-mink-of-management/input/public/images/717.jpg +0 -0
  803. package/workspaces/0-skinny-mink-of-management/input/public/images/718.jpg +0 -0
  804. package/workspaces/0-skinny-mink-of-management/input/public/images/72.jpg +0 -0
  805. package/workspaces/0-skinny-mink-of-management/input/public/images/720.jpg +0 -0
  806. package/workspaces/0-skinny-mink-of-management/input/public/images/721.jpg +0 -0
  807. package/workspaces/0-skinny-mink-of-management/input/public/images/722.jpg +0 -0
  808. package/workspaces/0-skinny-mink-of-management/input/public/images/724.jpg +0 -0
  809. package/workspaces/0-skinny-mink-of-management/input/public/images/726.jpg +0 -0
  810. package/workspaces/0-skinny-mink-of-management/input/public/images/727.jpg +0 -0
  811. package/workspaces/0-skinny-mink-of-management/input/public/images/728.jpg +0 -0
  812. package/workspaces/0-skinny-mink-of-management/input/public/images/73.jpg +0 -0
  813. package/workspaces/0-skinny-mink-of-management/input/public/images/730.jpg +0 -0
  814. package/workspaces/0-skinny-mink-of-management/input/public/images/732.jpg +0 -0
  815. package/workspaces/0-skinny-mink-of-management/input/public/images/733.jpg +0 -0
  816. package/workspaces/0-skinny-mink-of-management/input/public/images/737.jpg +0 -0
  817. package/workspaces/0-skinny-mink-of-management/input/public/images/738.jpg +0 -0
  818. package/workspaces/0-skinny-mink-of-management/input/public/images/740.jpg +0 -0
  819. package/workspaces/0-skinny-mink-of-management/input/public/images/741.jpg +0 -0
  820. package/workspaces/0-skinny-mink-of-management/input/public/images/742.jpg +0 -0
  821. package/workspaces/0-skinny-mink-of-management/input/public/images/745.jpg +0 -0
  822. package/workspaces/0-skinny-mink-of-management/input/public/images/747.jpg +0 -0
  823. package/workspaces/0-skinny-mink-of-management/input/public/images/748.jpg +0 -0
  824. package/workspaces/0-skinny-mink-of-management/input/public/images/749.jpg +0 -0
  825. package/workspaces/0-skinny-mink-of-management/input/public/images/75.jpg +0 -0
  826. package/workspaces/0-skinny-mink-of-management/input/public/images/752.jpg +0 -0
  827. package/workspaces/0-skinny-mink-of-management/input/public/images/753.jpg +0 -0
  828. package/workspaces/0-skinny-mink-of-management/input/public/images/754.jpg +0 -0
  829. package/workspaces/0-skinny-mink-of-management/input/public/images/755.jpg +0 -0
  830. package/workspaces/0-skinny-mink-of-management/input/public/images/756.jpg +0 -0
  831. package/workspaces/0-skinny-mink-of-management/input/public/images/757.jpg +0 -0
  832. package/workspaces/0-skinny-mink-of-management/input/public/images/758.jpg +0 -0
  833. package/workspaces/0-skinny-mink-of-management/input/public/images/759.jpg +0 -0
  834. package/workspaces/0-skinny-mink-of-management/input/public/images/76.jpg +0 -0
  835. package/workspaces/0-skinny-mink-of-management/input/public/images/760.jpg +0 -0
  836. package/workspaces/0-skinny-mink-of-management/input/public/images/762.jpg +0 -0
  837. package/workspaces/0-skinny-mink-of-management/input/public/images/763.jpg +0 -0
  838. package/workspaces/0-skinny-mink-of-management/input/public/images/765.jpg +0 -0
  839. package/workspaces/0-skinny-mink-of-management/input/public/images/766.jpg +0 -0
  840. package/workspaces/0-skinny-mink-of-management/input/public/images/767.jpg +0 -0
  841. package/workspaces/0-skinny-mink-of-management/input/public/images/768.jpg +0 -0
  842. package/workspaces/0-skinny-mink-of-management/input/public/images/769.jpg +0 -0
  843. package/workspaces/0-skinny-mink-of-management/input/public/images/771.jpg +0 -0
  844. package/workspaces/0-skinny-mink-of-management/input/public/images/772.jpg +0 -0
  845. package/workspaces/0-skinny-mink-of-management/input/public/images/774.jpg +0 -0
  846. package/workspaces/0-skinny-mink-of-management/input/public/images/776.jpg +0 -0
  847. package/workspaces/0-skinny-mink-of-management/input/public/images/777.jpg +0 -0
  848. package/workspaces/0-skinny-mink-of-management/input/public/images/778.jpg +0 -0
  849. package/workspaces/0-skinny-mink-of-management/input/public/images/779.jpg +0 -0
  850. package/workspaces/0-skinny-mink-of-management/input/public/images/78.jpg +0 -0
  851. package/workspaces/0-skinny-mink-of-management/input/public/images/784.jpg +0 -0
  852. package/workspaces/0-skinny-mink-of-management/input/public/images/785.jpg +0 -0
  853. package/workspaces/0-skinny-mink-of-management/input/public/images/787.jpg +0 -0
  854. package/workspaces/0-skinny-mink-of-management/input/public/images/788.jpg +0 -0
  855. package/workspaces/0-skinny-mink-of-management/input/public/images/789.jpg +0 -0
  856. package/workspaces/0-skinny-mink-of-management/input/public/images/792.jpg +0 -0
  857. package/workspaces/0-skinny-mink-of-management/input/public/images/793.jpg +0 -0
  858. package/workspaces/0-skinny-mink-of-management/input/public/images/794.jpg +0 -0
  859. package/workspaces/0-skinny-mink-of-management/input/public/images/796.jpg +0 -0
  860. package/workspaces/0-skinny-mink-of-management/input/public/images/797.jpg +0 -0
  861. package/workspaces/0-skinny-mink-of-management/input/public/images/798.jpg +0 -0
  862. package/workspaces/0-skinny-mink-of-management/input/public/images/8.jpg +0 -0
  863. package/workspaces/0-skinny-mink-of-management/input/public/images/80.jpg +0 -0
  864. package/workspaces/0-skinny-mink-of-management/input/public/images/800.jpg +0 -0
  865. package/workspaces/0-skinny-mink-of-management/input/public/images/801.jpg +0 -0
  866. package/workspaces/0-skinny-mink-of-management/input/public/images/802.jpg +0 -0
  867. package/workspaces/0-skinny-mink-of-management/input/public/images/803.jpg +0 -0
  868. package/workspaces/0-skinny-mink-of-management/input/public/images/805.jpg +0 -0
  869. package/workspaces/0-skinny-mink-of-management/input/public/images/806.jpg +0 -0
  870. package/workspaces/0-skinny-mink-of-management/input/public/images/807.jpg +0 -0
  871. package/workspaces/0-skinny-mink-of-management/input/public/images/808.jpg +0 -0
  872. package/workspaces/0-skinny-mink-of-management/input/public/images/809.jpg +0 -0
  873. package/workspaces/0-skinny-mink-of-management/input/public/images/81.jpg +0 -0
  874. package/workspaces/0-skinny-mink-of-management/input/public/images/810.jpg +0 -0
  875. package/workspaces/0-skinny-mink-of-management/input/public/images/811.jpg +0 -0
  876. package/workspaces/0-skinny-mink-of-management/input/public/images/812.jpg +0 -0
  877. package/workspaces/0-skinny-mink-of-management/input/public/images/813.jpg +0 -0
  878. package/workspaces/0-skinny-mink-of-management/input/public/images/815.jpg +0 -0
  879. package/workspaces/0-skinny-mink-of-management/input/public/images/816.jpg +0 -0
  880. package/workspaces/0-skinny-mink-of-management/input/public/images/82.jpg +0 -0
  881. package/workspaces/0-skinny-mink-of-management/input/public/images/821.jpg +0 -0
  882. package/workspaces/0-skinny-mink-of-management/input/public/images/822.jpg +0 -0
  883. package/workspaces/0-skinny-mink-of-management/input/public/images/823.jpg +0 -0
  884. package/workspaces/0-skinny-mink-of-management/input/public/images/824.jpg +0 -0
  885. package/workspaces/0-skinny-mink-of-management/input/public/images/825.jpg +0 -0
  886. package/workspaces/0-skinny-mink-of-management/input/public/images/826.jpg +0 -0
  887. package/workspaces/0-skinny-mink-of-management/input/public/images/827.jpg +0 -0
  888. package/workspaces/0-skinny-mink-of-management/input/public/images/828.jpg +0 -0
  889. package/workspaces/0-skinny-mink-of-management/input/public/images/83.jpg +0 -0
  890. package/workspaces/0-skinny-mink-of-management/input/public/images/831.jpg +0 -0
  891. package/workspaces/0-skinny-mink-of-management/input/public/images/837.jpg +0 -0
  892. package/workspaces/0-skinny-mink-of-management/input/public/images/838.jpg +0 -0
  893. package/workspaces/0-skinny-mink-of-management/input/public/images/839.jpg +0 -0
  894. package/workspaces/0-skinny-mink-of-management/input/public/images/84.jpg +0 -0
  895. package/workspaces/0-skinny-mink-of-management/input/public/images/840.jpg +0 -0
  896. package/workspaces/0-skinny-mink-of-management/input/public/images/841.jpg +0 -0
  897. package/workspaces/0-skinny-mink-of-management/input/public/images/844.jpg +0 -0
  898. package/workspaces/0-skinny-mink-of-management/input/public/images/847.jpg +0 -0
  899. package/workspaces/0-skinny-mink-of-management/input/public/images/848.jpg +0 -0
  900. package/workspaces/0-skinny-mink-of-management/input/public/images/849.jpg +0 -0
  901. package/workspaces/0-skinny-mink-of-management/input/public/images/85.jpg +0 -0
  902. package/workspaces/0-skinny-mink-of-management/input/public/images/850.jpg +0 -0
  903. package/workspaces/0-skinny-mink-of-management/input/public/images/851.jpg +0 -0
  904. package/workspaces/0-skinny-mink-of-management/input/public/images/852.jpg +0 -0
  905. package/workspaces/0-skinny-mink-of-management/input/public/images/853.jpg +0 -0
  906. package/workspaces/0-skinny-mink-of-management/input/public/images/854.jpg +0 -0
  907. package/workspaces/0-skinny-mink-of-management/input/public/images/855.jpg +0 -0
  908. package/workspaces/0-skinny-mink-of-management/input/public/images/856.jpg +0 -0
  909. package/workspaces/0-skinny-mink-of-management/input/public/images/858.jpg +0 -0
  910. package/workspaces/0-skinny-mink-of-management/input/public/images/859.jpg +0 -0
  911. package/workspaces/0-skinny-mink-of-management/input/public/images/860.jpg +0 -0
  912. package/workspaces/0-skinny-mink-of-management/input/public/images/861.jpg +0 -0
  913. package/workspaces/0-skinny-mink-of-management/input/public/images/862.jpg +0 -0
  914. package/workspaces/0-skinny-mink-of-management/input/public/images/863.jpg +0 -0
  915. package/workspaces/0-skinny-mink-of-management/input/public/images/864.jpg +0 -0
  916. package/workspaces/0-skinny-mink-of-management/input/public/images/865.jpg +0 -0
  917. package/workspaces/0-skinny-mink-of-management/input/public/images/866.jpg +0 -0
  918. package/workspaces/0-skinny-mink-of-management/input/public/images/867.jpg +0 -0
  919. package/workspaces/0-skinny-mink-of-management/input/public/images/868.jpg +0 -0
  920. package/workspaces/0-skinny-mink-of-management/input/public/images/869.jpg +0 -0
  921. package/workspaces/0-skinny-mink-of-management/input/public/images/87.jpg +0 -0
  922. package/workspaces/0-skinny-mink-of-management/input/public/images/870.jpg +0 -0
  923. package/workspaces/0-skinny-mink-of-management/input/public/images/871.jpg +0 -0
  924. package/workspaces/0-skinny-mink-of-management/input/public/images/873.jpg +0 -0
  925. package/workspaces/0-skinny-mink-of-management/input/public/images/874.jpg +0 -0
  926. package/workspaces/0-skinny-mink-of-management/input/public/images/875.jpg +0 -0
  927. package/workspaces/0-skinny-mink-of-management/input/public/images/876.jpg +0 -0
  928. package/workspaces/0-skinny-mink-of-management/input/public/images/877.jpg +0 -0
  929. package/workspaces/0-skinny-mink-of-management/input/public/images/878.jpg +0 -0
  930. package/workspaces/0-skinny-mink-of-management/input/public/images/879.jpg +0 -0
  931. package/workspaces/0-skinny-mink-of-management/input/public/images/88.jpg +0 -0
  932. package/workspaces/0-skinny-mink-of-management/input/public/images/881.jpg +0 -0
  933. package/workspaces/0-skinny-mink-of-management/input/public/images/882.jpg +0 -0
  934. package/workspaces/0-skinny-mink-of-management/input/public/images/883.jpg +0 -0
  935. package/workspaces/0-skinny-mink-of-management/input/public/images/885.jpg +0 -0
  936. package/workspaces/0-skinny-mink-of-management/input/public/images/886.jpg +0 -0
  937. package/workspaces/0-skinny-mink-of-management/input/public/images/892.jpg +0 -0
  938. package/workspaces/0-skinny-mink-of-management/input/public/images/893.jpg +0 -0
  939. package/workspaces/0-skinny-mink-of-management/input/public/images/894.jpg +0 -0
  940. package/workspaces/0-skinny-mink-of-management/input/public/images/896.jpg +0 -0
  941. package/workspaces/0-skinny-mink-of-management/input/public/images/897.jpg +0 -0
  942. package/workspaces/0-skinny-mink-of-management/input/public/images/898.jpg +0 -0
  943. package/workspaces/0-skinny-mink-of-management/input/public/images/899.jpg +0 -0
  944. package/workspaces/0-skinny-mink-of-management/input/public/images/900.jpg +0 -0
  945. package/workspaces/0-skinny-mink-of-management/input/public/images/901.jpg +0 -0
  946. package/workspaces/0-skinny-mink-of-management/input/public/images/904.jpg +0 -0
  947. package/workspaces/0-skinny-mink-of-management/input/public/images/906.jpg +0 -0
  948. package/workspaces/0-skinny-mink-of-management/input/public/images/907.jpg +0 -0
  949. package/workspaces/0-skinny-mink-of-management/input/public/images/908.jpg +0 -0
  950. package/workspaces/0-skinny-mink-of-management/input/public/images/910.jpg +0 -0
  951. package/workspaces/0-skinny-mink-of-management/input/public/images/911.jpg +0 -0
  952. package/workspaces/0-skinny-mink-of-management/input/public/images/912.jpg +0 -0
  953. package/workspaces/0-skinny-mink-of-management/input/public/images/914.jpg +0 -0
  954. package/workspaces/0-skinny-mink-of-management/input/public/images/915.jpg +0 -0
  955. package/workspaces/0-skinny-mink-of-management/input/public/images/916.jpg +0 -0
  956. package/workspaces/0-skinny-mink-of-management/input/public/images/917.jpg +0 -0
  957. package/workspaces/0-skinny-mink-of-management/input/public/images/918.jpg +0 -0
  958. package/workspaces/0-skinny-mink-of-management/input/public/images/919.jpg +0 -0
  959. package/workspaces/0-skinny-mink-of-management/input/public/images/92.jpg +0 -0
  960. package/workspaces/0-skinny-mink-of-management/input/public/images/920.jpg +0 -0
  961. package/workspaces/0-skinny-mink-of-management/input/public/images/923.jpg +0 -0
  962. package/workspaces/0-skinny-mink-of-management/input/public/images/924.jpg +0 -0
  963. package/workspaces/0-skinny-mink-of-management/input/public/images/926.jpg +0 -0
  964. package/workspaces/0-skinny-mink-of-management/input/public/images/927.jpg +0 -0
  965. package/workspaces/0-skinny-mink-of-management/input/public/images/928.jpg +0 -0
  966. package/workspaces/0-skinny-mink-of-management/input/public/images/931.jpg +0 -0
  967. package/workspaces/0-skinny-mink-of-management/input/public/images/932.jpg +0 -0
  968. package/workspaces/0-skinny-mink-of-management/input/public/images/933.jpg +0 -0
  969. package/workspaces/0-skinny-mink-of-management/input/public/images/934.jpg +0 -0
  970. package/workspaces/0-skinny-mink-of-management/input/public/images/936.jpg +0 -0
  971. package/workspaces/0-skinny-mink-of-management/input/public/images/937.jpg +0 -0
  972. package/workspaces/0-skinny-mink-of-management/input/public/images/938.jpg +0 -0
  973. package/workspaces/0-skinny-mink-of-management/input/public/images/939.jpg +0 -0
  974. package/workspaces/0-skinny-mink-of-management/input/public/images/942.jpg +0 -0
  975. package/workspaces/0-skinny-mink-of-management/input/public/images/944.jpg +0 -0
  976. package/workspaces/0-skinny-mink-of-management/input/public/images/948.jpg +0 -0
  977. package/workspaces/0-skinny-mink-of-management/input/public/images/949.jpg +0 -0
  978. package/workspaces/0-skinny-mink-of-management/input/public/images/951.jpg +0 -0
  979. package/workspaces/0-skinny-mink-of-management/input/public/images/952.jpg +0 -0
  980. package/workspaces/0-skinny-mink-of-management/input/public/images/954.jpg +0 -0
  981. package/workspaces/0-skinny-mink-of-management/input/public/images/955.jpg +0 -0
  982. package/workspaces/0-skinny-mink-of-management/input/public/images/956.jpg +0 -0
  983. package/workspaces/0-skinny-mink-of-management/input/public/images/958.jpg +0 -0
  984. package/workspaces/0-skinny-mink-of-management/input/public/images/959.jpg +0 -0
  985. package/workspaces/0-skinny-mink-of-management/input/public/images/960.jpg +0 -0
  986. package/workspaces/0-skinny-mink-of-management/input/public/images/961.jpg +0 -0
  987. package/workspaces/0-skinny-mink-of-management/input/public/images/962.jpg +0 -0
  988. package/workspaces/0-skinny-mink-of-management/input/public/images/963.jpg +0 -0
  989. package/workspaces/0-skinny-mink-of-management/input/public/images/966.jpg +0 -0
  990. package/workspaces/0-skinny-mink-of-management/input/public/images/968.jpg +0 -0
  991. package/workspaces/0-skinny-mink-of-management/input/public/images/969.jpg +0 -0
  992. package/workspaces/0-skinny-mink-of-management/input/public/images/970.jpg +0 -0
  993. package/workspaces/0-skinny-mink-of-management/input/public/images/971.jpg +0 -0
  994. package/workspaces/0-skinny-mink-of-management/input/public/images/972.jpg +0 -0
  995. package/workspaces/0-skinny-mink-of-management/input/public/images/975.jpg +0 -0
  996. package/workspaces/0-skinny-mink-of-management/input/public/images/976.jpg +0 -0
  997. package/workspaces/0-skinny-mink-of-management/input/public/images/978.jpg +0 -0
  998. package/workspaces/0-skinny-mink-of-management/input/public/images/979.jpg +0 -0
  999. package/workspaces/0-skinny-mink-of-management/input/public/images/981.jpg +0 -0
  1000. package/workspaces/0-skinny-mink-of-management/input/public/images/983.jpg +0 -0
  1001. package/workspaces/0-skinny-mink-of-management/input/public/images/985.jpg +0 -0
  1002. package/workspaces/0-skinny-mink-of-management/input/public/images/987.jpg +0 -0
  1003. package/workspaces/0-skinny-mink-of-management/input/public/images/989.jpg +0 -0
  1004. package/workspaces/0-skinny-mink-of-management/input/public/images/990.jpg +0 -0
  1005. package/workspaces/0-skinny-mink-of-management/input/public/images/992.jpg +0 -0
  1006. package/workspaces/0-skinny-mink-of-management/input/public/images/993.jpg +0 -0
  1007. package/workspaces/0-skinny-mink-of-management/input/public/images/994.jpg +0 -0
  1008. package/workspaces/0-skinny-mink-of-management/input/public/images/995.jpg +0 -0
  1009. package/workspaces/0-skinny-mink-of-management/input/public/images/996.jpg +0 -0
  1010. package/workspaces/0-skinny-mink-of-management/input/public/images/999.jpg +0 -0
  1011. package/workspaces/0-skinny-mink-of-management/input/public/sample_submission.csv +0 -100
  1012. package/workspaces/0-skinny-mink-of-management/input/public/test.csv +0 -100
  1013. package/workspaces/0-skinny-mink-of-management/input/public/train.csv +0 -892
  1014. package/workspaces/0-skinny-mink-of-management/working/submission.csv +0 -100
  1015. package/workspaces/santa-2025/EXISTING_SOLUTION_ANALYSIS.md +0 -181
  1016. package/workspaces/santa-2025/FINAL_ANALYSIS_SUMMARY.md +0 -126
  1017. package/workspaces/santa-2025/FINAL_RECOMMENDATION.md +0 -189
  1018. package/workspaces/santa-2025/FINAL_REPORT.md +0 -207
  1019. package/workspaces/santa-2025/INDEX.md +0 -136
  1020. package/workspaces/santa-2025/PROGRESS.md +0 -210
  1021. package/workspaces/santa-2025/QUICK_WINS_ANALYSIS.md +0 -158
  1022. package/workspaces/santa-2025/README.md +0 -165
  1023. package/workspaces/santa-2025/SUMMARY.md +0 -239
  1024. package/workspaces/santa-2025/advanced_optimizer.py +0 -293
  1025. package/workspaces/santa-2025/analysis_summary.txt +0 -69
  1026. package/workspaces/santa-2025/baseline_log.txt +0 -21
  1027. package/workspaces/santa-2025/baseline_solution.py +0 -237
  1028. package/workspaces/santa-2025/baseline_submission.csv +0 -20101
  1029. package/workspaces/santa-2025/competition_data_page.html +0 -131
  1030. package/workspaces/santa-2025/competition_page.html +0 -131
  1031. package/workspaces/santa-2025/create_ensemble.py +0 -160
  1032. package/workspaces/santa-2025/ensemble_submission.csv +0 -20101
  1033. package/workspaces/santa-2025/evaluate_submission.py +0 -173
  1034. package/workspaces/santa-2025/explore_competition.py +0 -62
  1035. package/workspaces/santa-2025/fetch_competition_info.py +0 -57
  1036. package/workspaces/santa-2025/fix_small_configs_fast.py +0 -184
  1037. package/workspaces/santa-2025/improved_log.txt +0 -48
  1038. package/workspaces/santa-2025/improved_solution.py +0 -325
  1039. package/workspaces/santa-2025/improved_submission.csv +0 -20101
  1040. package/workspaces/santa-2025/optimize_small_configs.py +0 -272
  1041. package/workspaces/santa-2025/optimized_n1_to_n6.csv +0 -22
  1042. package/workspaces/santa-2025/optimized_solution.py +0 -393
  1043. package/workspaces/santa-2025/optimized_submission_score70.93.csv +0 -20101
  1044. package/workspaces/santa-2025/puzzle_010.png +0 -0
  1045. package/workspaces/santa-2025/puzzle_020.png +0 -0
  1046. package/workspaces/santa-2025/puzzle_050.png +0 -0
  1047. package/workspaces/santa-2025/puzzle_100.png +0 -0
  1048. package/workspaces/santa-2025/puzzle_150.png +0 -0
  1049. package/workspaces/santa-2025/puzzle_200.png +0 -0
  1050. package/workspaces/santa-2025/requirements.txt +0 -8
  1051. package/workspaces/santa-2025/sample_submission.csv +0 -20101
  1052. package/workspaces/santa-2025/santa-2025-getting-started.ipynb +0 -1
  1053. package/workspaces/santa-2025/santa-2025-getting-started.py +0 -320
  1054. package/workspaces/santa-2025/santa-2025-metric.ipynb +0 -1
  1055. package/workspaces/santa-2025/santa-2025-metric.py +0 -157
  1056. package/workspaces/santa-2025/santa-2025.zip +0 -0
  1057. package/workspaces/santa-2025/test_solution.py +0 -204
  1058. package/workspaces/santa-2025/ultra_optimized_score70.93.csv +0 -20101
  1059. package/workspaces/santa-2025/ultra_optimizer.py +0 -267
  1060. package/workspaces/santa-2025/visualize.py +0 -166
package/src/api.ts CHANGED
@@ -41,6 +41,38 @@ function isAuthError(status: number, errorText: string): boolean {
41
41
  );
42
42
  }
43
43
 
44
+ function extractErrorMessage(payload: unknown): string | undefined {
45
+ if (!payload) return undefined;
46
+ if (typeof payload === "string") return payload;
47
+
48
+ if (Array.isArray(payload)) {
49
+ const parts = payload
50
+ .map((item) => extractErrorMessage(item))
51
+ .filter((item): item is string => Boolean(item && item.trim()));
52
+ return parts.length > 0 ? parts.join("; ") : undefined;
53
+ }
54
+
55
+ if (typeof payload === "object") {
56
+ const record = payload as Record<string, unknown>;
57
+
58
+ if (typeof record.detail === "string") return record.detail;
59
+ if (record.detail !== undefined) {
60
+ const detailMessage = extractErrorMessage(record.detail);
61
+ if (detailMessage) return detailMessage;
62
+ }
63
+
64
+ if (typeof record.message === "string") return record.message;
65
+ if (typeof record.error === "string") return record.error;
66
+ if (typeof record.msg === "string") return record.msg;
67
+
68
+ if (Array.isArray(record.loc) && typeof record.msg === "string") {
69
+ return `${record.loc.join(".")}: ${record.msg}`;
70
+ }
71
+ }
72
+
73
+ return undefined;
74
+ }
75
+
44
76
  async function request<T = unknown>(
45
77
  method: string,
46
78
  path: string,
@@ -76,20 +108,21 @@ async function request<T = unknown>(
76
108
 
77
109
  if (!res.ok) {
78
110
  const rawError = data ? JSON.stringify(data) : text || `HTTP ${res.status}`;
111
+ const extractedError = extractErrorMessage(data) || text || `HTTP ${res.status}`;
79
112
 
80
113
  // Format authentication errors with helpful instructions
81
114
  if (isAuthError(res.status, rawError)) {
82
115
  return {
83
116
  ok: false,
84
117
  status: res.status,
85
- error: formatAuthError(),
118
+ error: formatAuthError(extractedError),
86
119
  };
87
120
  }
88
121
 
89
122
  return {
90
123
  ok: false,
91
124
  status: res.status,
92
- error: rawError,
125
+ error: extractedError,
93
126
  };
94
127
  }
95
128
 
@@ -161,10 +194,26 @@ export interface Dataset {
161
194
  dataset_type: string;
162
195
  size?: number;
163
196
  sample_size?: number;
197
+ train_ratio?: number;
164
198
  version_number?: string;
165
199
  root_dataset_id?: string;
200
+ project_id?: string;
166
201
  schema?: Record<string, unknown>;
167
202
  schema_warnings?: string[];
203
+ validation?: Record<string, unknown>;
204
+ annotation_status?: "none" | "in_progress" | "completed";
205
+ annotation_config?: Record<string, unknown>;
206
+ annotation_progress?: Record<string, unknown>;
207
+ status?: "initialized" | "uploading" | "converting" | "validating" | "ready" | "failed" | "generating" | "queued";
208
+ processing_error?: string;
209
+ type?: "training" | "evaluation" | "benchmark";
210
+ visibility?: "private" | "public";
211
+ is_competition?: boolean;
212
+ labels?: string[];
213
+ generation_type?: string;
214
+ is_seed?: boolean;
215
+ synthesis_session_id?: string;
216
+ column_mapping?: Record<string, string>;
168
217
  created_at: string;
169
218
  updated_at?: string;
170
219
  }
@@ -191,90 +240,158 @@ export async function getDataset(dataset: DatasetRef): Promise<ApiResult<Dataset
191
240
  return request<Dataset>("GET", `/felix/datasets/${dataset.name}/${dataset.version}`);
192
241
  }
193
242
 
194
- export interface DatasetCreateRequest {
243
+ export interface UploadUrlRequest {
195
244
  dataset_name: string;
196
- dataset_path: string;
197
- dataset_type?: "classification" | "ner" | "custom";
198
- size?: number;
199
- sample_size?: number;
245
+ dataset_type?: "classification" | "ner" | "custom" | "decoder";
246
+ format?: "jsonl" | "csv" | "parquet";
247
+ content_type?: string;
248
+ }
249
+
250
+ export interface UploadUrlResponse {
251
+ upload_url: string;
252
+ dataset_id: string;
253
+ key: string;
254
+ expires_in: number;
255
+ }
256
+
257
+ export async function getUploadUrl(
258
+ req: UploadUrlRequest
259
+ ): Promise<ApiResult<UploadUrlResponse>> {
260
+ return request<UploadUrlResponse>("POST", "/felix/datasets/upload/url", req);
261
+ }
262
+
263
+ export interface ProcessUploadRequest {
264
+ dataset_id: string;
265
+ dataset_name: string;
266
+ dataset_type?: "classification" | "ner" | "custom" | "decoder";
267
+ format?: "jsonl" | "csv" | "parquet";
268
+ schema?: Record<string, string>;
269
+ project_id?: string;
200
270
  }
201
271
 
202
- export async function createDataset(
203
- req: DatasetCreateRequest
272
+ export async function processUpload(
273
+ req: ProcessUploadRequest
204
274
  ): Promise<ApiResult<Dataset>> {
205
- return request<Dataset>("POST", "/felix/datasets", req);
275
+ return request<Dataset>("POST", "/felix/datasets/upload/process", req);
206
276
  }
207
277
 
208
278
  export async function deleteDataset(dataset: DatasetRef): Promise<ApiResult> {
209
279
  return request("DELETE", `/felix/datasets/${dataset.name}/${dataset.version}`);
210
280
  }
211
281
 
282
+ export async function deleteAllDatasetVersions(name: string): Promise<ApiResult> {
283
+ return request("DELETE", `/felix/datasets/${name}`);
284
+ }
285
+
286
+ export interface DatasetVersionsResponse {
287
+ success: boolean;
288
+ versions: Dataset[];
289
+ count: number;
290
+ }
291
+
292
+ export async function listDatasetVersions(
293
+ name: string
294
+ ): Promise<ApiResult<DatasetVersionsResponse>> {
295
+ return request<DatasetVersionsResponse>("GET", `/felix/datasets/${name}`);
296
+ }
297
+
298
+ export interface DatasetMetadataUpdate {
299
+ dataset_name?: string;
300
+ dataset_type?: "ner" | "classification" | "custom" | "decoder";
301
+ project_id?: string;
302
+ }
303
+
304
+ export async function updateDatasetMetadata(
305
+ dataset: DatasetRef,
306
+ update: DatasetMetadataUpdate
307
+ ): Promise<ApiResult<Dataset>> {
308
+ return request<Dataset>(
309
+ "PUT",
310
+ `/felix/datasets/${dataset.name}/${dataset.version}`,
311
+ update
312
+ );
313
+ }
314
+
315
+ export async function previewDataset(
316
+ dataset: DatasetRef,
317
+ options: { limit?: number; offset?: number } = {}
318
+ ): Promise<ApiResult<Record<string, unknown>>> {
319
+ const params = new URLSearchParams();
320
+ if (options.limit) params.set("limit", String(options.limit));
321
+ if (options.offset) params.set("offset", String(options.offset));
322
+ const query = params.toString();
323
+ const url = `/felix/datasets/${dataset.name}/${dataset.version}/preview${query ? `?${query}` : ""}`;
324
+ return request<Record<string, unknown>>("GET", url);
325
+ }
326
+
212
327
  export interface DatasetUploadRequest {
213
328
  dataset_name: string;
214
- dataset_type?: "ner" | "classification" | "custom";
329
+ dataset_type?: "ner" | "classification" | "custom" | "decoder";
215
330
  format?: "jsonl" | "csv" | "parquet";
216
331
  schema?: Record<string, string>;
332
+ project_id?: string;
217
333
  }
218
334
 
219
335
  export async function uploadDataset(
220
336
  filePath: string,
221
337
  options: DatasetUploadRequest
222
338
  ): Promise<ApiResult<Dataset>> {
223
- const baseUrl = getBaseUrl().replace(/\/$/, "");
224
- const apiKey = getApiKey();
225
- const url = `${baseUrl}/felix/datasets/upload`;
226
-
227
- const headers: Record<string, string> = {
228
- "User-Agent": "pioneer-cli/0.1.0",
229
- };
230
-
231
- if (apiKey) {
232
- headers["X-API-Key"] = apiKey;
233
- }
234
-
235
339
  try {
236
340
  const fs = await import("fs");
237
341
  const path = await import("path");
238
342
  const fileContent = fs.readFileSync(filePath);
239
343
  const filename = path.basename(filePath);
240
344
 
241
- const formData = new FormData();
242
- formData.append("file", new Blob([fileContent]), filename);
243
- formData.append("dataset_name", options.dataset_name);
244
- if (options.dataset_type) {
245
- formData.append("dataset_type", options.dataset_type);
246
- }
247
- if (options.format) {
248
- formData.append("format", options.format);
249
- }
250
- if (options.schema) {
251
- formData.append("schema", JSON.stringify(options.schema));
252
- }
345
+ // Detect format from file extension if not provided
346
+ const ext = path.extname(filename).slice(1) as "jsonl" | "csv" | "parquet";
347
+ const format = options.format || ext || "jsonl";
253
348
 
254
- const res = await fetch(url, {
255
- method: "POST",
256
- headers,
257
- body: formData,
349
+ // Step 1: Get presigned upload URL
350
+ const urlResult = await getUploadUrl({
351
+ dataset_name: options.dataset_name,
352
+ dataset_type: options.dataset_type,
353
+ format,
354
+ content_type: format === "parquet" ? "application/octet-stream" : "text/plain",
258
355
  });
259
356
 
260
- const text = await res.text();
261
-
262
- let data: Dataset | undefined;
263
- try {
264
- data = JSON.parse(text) as Dataset;
265
- } catch {
266
- // Not JSON
357
+ if (!urlResult.ok || !urlResult.data) {
358
+ return {
359
+ ok: false,
360
+ status: urlResult.status,
361
+ error: urlResult.error || "Failed to get upload URL",
362
+ };
267
363
  }
268
364
 
269
- if (!res.ok) {
365
+ const { upload_url, dataset_id } = urlResult.data;
366
+
367
+ // Step 2: Upload file directly to S3 via presigned URL
368
+ const uploadRes = await fetch(upload_url, {
369
+ method: "PUT",
370
+ headers: {
371
+ "Content-Type": format === "parquet" ? "application/octet-stream" : "text/plain",
372
+ },
373
+ body: fileContent,
374
+ });
375
+
376
+ if (!uploadRes.ok) {
270
377
  return {
271
378
  ok: false,
272
- status: res.status,
273
- error: data ? JSON.stringify(data) : text || `HTTP ${res.status}`,
379
+ status: uploadRes.status,
380
+ error: `Failed to upload file to S3: HTTP ${uploadRes.status}`,
274
381
  };
275
382
  }
276
383
 
277
- return { ok: true, status: res.status, data };
384
+ // Step 3: Trigger processing
385
+ const processResult = await processUpload({
386
+ dataset_id,
387
+ dataset_name: options.dataset_name,
388
+ dataset_type: options.dataset_type,
389
+ format,
390
+ schema: options.schema,
391
+ project_id: options.project_id,
392
+ });
393
+
394
+ return processResult;
278
395
  } catch (err) {
279
396
  return {
280
397
  ok: false,
@@ -366,9 +483,95 @@ export interface DatasetAnalysisRequest {
366
483
  analyses: string[];
367
484
  }
368
485
 
486
+ // Diversity Analysis Types
487
+ export interface DiversityPoint {
488
+ x?: number;
489
+ y?: number;
490
+ z?: number;
491
+ w?: number;
492
+ coordinates: number[];
493
+ text?: string;
494
+ token_count?: number;
495
+ labels?: string[];
496
+ metadata?: Record<string, unknown>;
497
+ sample_index?: number;
498
+ similarity_to_centroid?: number;
499
+ embedding?: number[];
500
+ }
501
+
502
+ export interface DiversityVisualization {
503
+ method: "pca" | "tsne";
504
+ dimensions: number;
505
+ points: DiversityPoint[];
506
+ tsne_perplexity?: number;
507
+ similarity_range?: { min: number; max: number };
508
+ token_count_range?: { min: number; max: number };
509
+ }
510
+
511
+ export interface DiversityLLMAnalysis {
512
+ reasoning_trace: string;
513
+ summary: string;
514
+ diversity_rating: "low" | "moderate" | "high" | "excellent";
515
+ key_observations: string[];
516
+ recommendations: string[];
517
+ model_used: string;
518
+ }
519
+
520
+ export interface DiversityAnalysis {
521
+ vendi_score: number;
522
+ sample_size: number;
523
+ interpretation?: string;
524
+ visualization?: DiversityVisualization;
525
+ llm_analysis?: DiversityLLMAnalysis;
526
+ }
527
+
528
+ // Distribution Analysis Types
529
+ export interface DistributionAnalysis {
530
+ label_counts: Record<string, number>;
531
+ total_samples: number;
532
+ unique_labels: number;
533
+ most_common_label?: string;
534
+ least_common_label?: string;
535
+ imbalance_ratio?: number;
536
+ }
537
+
538
+ // Duplicates Analysis Types
539
+ export interface DuplicatesAnalysis {
540
+ total_duplicates: number;
541
+ duplicate_groups: number;
542
+ duplicate_percentage: number;
543
+ examples?: Array<{ text: string; count: number }>;
544
+ }
545
+
546
+ // Outliers Analysis Types
547
+ export interface OutliersAnalysis {
548
+ total_outliers: number;
549
+ outlier_percentage: number;
550
+ method: string;
551
+ threshold?: number;
552
+ examples?: Array<{ text: string; score: number; reason?: string }>;
553
+ }
554
+
555
+ // Splits Analysis Types
556
+ export interface SplitsAnalysis {
557
+ train_size: number;
558
+ validation_size: number;
559
+ test_size?: number;
560
+ train_percentage: number;
561
+ validation_percentage: number;
562
+ test_percentage?: number;
563
+ }
564
+
369
565
  export interface DatasetAnalysisResponse {
370
- success: boolean;
371
- analysis: unknown;
566
+ summary: Record<string, unknown>;
567
+ distribution?: DistributionAnalysis;
568
+ duplicates?: DuplicatesAnalysis;
569
+ outliers?: OutliersAnalysis;
570
+ correlations?: Record<string, unknown>;
571
+ splits?: SplitsAnalysis;
572
+ errors?: Record<string, unknown>;
573
+ diversity?: DiversityAnalysis;
574
+ natural_language_response?: string;
372
575
  }
373
576
 
374
577
  export async function analyzeDataset(
@@ -410,6 +613,157 @@ export interface GenerateResponse {
410
613
  dataset?: Record<string, unknown>;
411
614
  }
412
615
 
616
+ export type GenerateTaskType =
617
+ | "ner"
618
+ | "classification"
619
+ | "custom"
620
+ | "decoder"
621
+ | "records"
622
+ | "fields";
623
+
624
+ export interface GenerateAsyncResponse {
625
+ job_id: string;
626
+ status?: string;
627
+ dataset_name: string;
628
+ task_type: GenerateTaskType;
629
+ is_seed?: boolean;
630
+ message?: string;
631
+ }
632
+
633
+ export interface GenerateJobStatus {
634
+ job_id: string;
635
+ status: "queued" | "generating" | "ready" | "failed" | string;
636
+ data?: Record<string, unknown>[];
637
+ count?: number;
638
+ task_type?: string;
639
+ token_usage?: number;
640
+ dataset?: Record<string, unknown>;
641
+ error?: string;
642
+ is_seed?: boolean;
643
+ created_at?: string;
644
+ }
645
+
646
+ export interface GenerateRequest {
647
+ task_type: GenerateTaskType;
648
+ dataset_name: string;
649
+ num_examples?: number;
650
+ domain_description?: string;
651
+ temperature?: number;
652
+ quality?: "light" | "medium" | "heavy";
653
+ session_id?: string;
654
+ config_num_examples?: number;
655
+ seed?: number;
656
+ labels?: string[];
657
+ classified_examples?: Record<string, unknown>[];
658
+ multi_label?: boolean;
659
+ class_balance?: Record<string, number>;
660
+ batch_size?: number;
661
+ negative_ratio?: number;
662
+ fields?: RecordField[];
663
+ input_fields?: RecordField[];
664
+ output_fields?: RecordField[];
665
+ prompt?: string;
666
+ output_format?: Record<string, unknown>;
667
+ infer_output_format?: boolean;
668
+ instruction?: string;
669
+ constraints?: ConstraintRequest[];
670
+ multiplicator?: Record<string, unknown>;
671
+ use_meta_felix?: boolean;
672
+ min_criteria?: number;
673
+ target_choices?: number;
674
+ project_id?: string;
675
+ type?: "training" | "evaluation" | "split";
676
+ visibility?: "private" | "public";
677
+ split_ratio?: Record<string, number>;
678
+ }
679
+
680
+ const GENERATION_POLL_INTERVAL_MS = 2000;
681
+ const GENERATION_MAX_ATTEMPTS = 300; // 10 minutes
682
+
683
+ function sleep(ms: number): Promise<void> {
684
+ return new Promise((resolve) => setTimeout(resolve, ms));
685
+ }
686
+
687
+ function makeDefaultDatasetName(taskType: GenerateTaskType): string {
688
+ return `${taskType}-dataset-${Date.now()}`;
689
+ }
690
+
691
+ export async function startGeneration(
692
+ req: GenerateRequest,
693
+ options: { isSeed?: boolean; synthesisSessionId?: string } = {}
694
+ ): Promise<ApiResult<GenerateAsyncResponse>> {
695
+ const params = new URLSearchParams();
696
+ if (options.isSeed) params.set("is_seed", "true");
697
+ if (options.synthesisSessionId) {
698
+ params.set("synthesis_session_id", options.synthesisSessionId);
699
+ }
700
+ const query = params.toString();
701
+ const url = query ? `/generate?${query}` : "/generate";
702
+ return request<GenerateAsyncResponse>("POST", url, req);
703
+ }
704
+
705
+ export async function getGenerationJobStatus(
706
+ jobId: string
707
+ ): Promise<ApiResult<GenerateJobStatus>> {
708
+ return request<GenerateJobStatus>("GET", `/generate/jobs/${jobId}`);
709
+ }
710
+
711
+ export async function waitForGenerationJob(
712
+ jobId: string,
713
+ options: { pollIntervalMs?: number; maxAttempts?: number } = {}
714
+ ): Promise<ApiResult<GenerateJobStatus>> {
715
+ const pollIntervalMs = options.pollIntervalMs ?? GENERATION_POLL_INTERVAL_MS;
716
+ const maxAttempts = options.maxAttempts ?? GENERATION_MAX_ATTEMPTS;
717
+
718
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
719
+ const statusResult = await getGenerationJobStatus(jobId);
720
+ if (!statusResult.ok || !statusResult.data) {
721
+ if (statusResult.status === 404 && attempt < 5) {
722
+ await sleep(pollIntervalMs);
723
+ continue;
724
+ }
725
+ return {
726
+ ok: false,
727
+ status: statusResult.status,
728
+ error: statusResult.error ?? "Failed to fetch generation status",
729
+ };
730
+ }
731
+
732
+ if (statusResult.data.status === "ready") {
733
+ return statusResult;
734
+ }
735
+
736
+ if (statusResult.data.status === "failed") {
737
+ return {
738
+ ok: false,
739
+ status: statusResult.status || 500,
740
+ error: statusResult.data.error ?? "Generation failed",
741
+ };
742
+ }
743
+
744
+ await sleep(pollIntervalMs);
745
+ }
746
+
747
+ return {
748
+ ok: false,
749
+ status: 408,
750
+ error: `Generation timed out for job ${jobId}. Use 'pioneer dataset get <name[:version]>' once ready.`,
751
+ };
752
+ }
753
+
754
+ async function generateDataset(req: GenerateRequest): Promise<ApiResult<GenerateJobStatus>> {
755
+ const startResult = await startGeneration(req);
756
+ if (!startResult.ok || !startResult.data) {
757
+ return {
758
+ ok: false,
759
+ status: startResult.status,
760
+ error: startResult.error ?? "Failed to start generation job",
761
+ };
762
+ }
763
+
764
+ return waitForGenerationJob(startResult.data.job_id);
765
+ }
766
+
413
767
  export interface InferLabelsResponse {
414
768
  success: boolean;
415
769
  labels: string[];
@@ -430,16 +784,39 @@ export interface GenerateNERRequest {
430
784
  num_examples?: number;
431
785
  domain_description?: string;
432
786
  seed?: number;
787
+ session_id?: string;
788
+ config_num_examples?: number;
433
789
  temperature?: number;
434
790
  constraints?: ConstraintRequest[];
435
791
  save_dataset?: boolean;
436
792
  dataset_name?: string;
793
+ project_id?: string;
794
+ quality?: "light" | "medium" | "heavy";
795
+ type?: "training" | "evaluation" | "split";
796
+ visibility?: "private" | "public";
797
+ negative_ratio?: number;
437
798
  }
438
799
 
439
800
  export async function generateNER(
440
801
  req: GenerateNERRequest
441
- ): Promise<ApiResult<GenerateResponse>> {
442
- return request<GenerateResponse>("POST", "/felix/generate/ner", req);
802
+ ): Promise<ApiResult<GenerateJobStatus>> {
803
+ return generateDataset({
804
+ task_type: "ner",
805
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("ner"),
806
+ labels: req.labels,
807
+ num_examples: req.num_examples,
808
+ domain_description: req.domain_description,
809
+ seed: req.seed,
810
+ session_id: req.session_id,
811
+ config_num_examples: req.config_num_examples,
812
+ temperature: req.temperature,
813
+ constraints: req.constraints,
814
+ project_id: req.project_id,
815
+ quality: req.quality,
816
+ type: req.type,
817
+ visibility: req.visibility,
818
+ negative_ratio: req.negative_ratio,
819
+ });
443
820
  }
444
821
 
445
822
  export interface LabelExistingNERRequest {
@@ -456,7 +833,7 @@ export interface LabelExistingNERRequest {
456
833
  export async function labelExistingNER(
457
834
  req: LabelExistingNERRequest
458
835
  ): Promise<ApiResult<GenerateResponse>> {
459
- return request<GenerateResponse>("POST", "/felix/generate/ner/label-existing", req);
836
+ return request<GenerateResponse>("POST", "/generate/ner/label-existing", req);
460
837
  }
461
838
 
462
839
  export interface InferNERLabelsRequest {
@@ -466,7 +843,7 @@ export interface InferNERLabelsRequest {
466
843
  export async function inferNERLabels(
467
844
  req: InferNERLabelsRequest
468
845
  ): Promise<ApiResult<InferLabelsResponse>> {
469
- return request<InferLabelsResponse>("POST", "/felix/generate/ner/infer-labels", req);
846
+ return request<InferLabelsResponse>("POST", "/generate/ner/infer-labels", req);
470
847
  }
471
848
 
472
849
  // Classification Generation
@@ -476,18 +853,44 @@ export interface GenerateClassificationRequest {
476
853
  domain_description?: string;
477
854
  seed?: number;
478
855
  class_balance?: Record<string, number>;
856
+ session_id?: string;
857
+ config_num_examples?: number;
479
858
  temperature?: number;
480
859
  batch_size?: number;
481
860
  constraints?: ConstraintRequest[];
482
861
  multi_label?: boolean;
483
862
  save_dataset?: boolean;
484
863
  dataset_name?: string;
864
+ project_id?: string;
865
+ quality?: "light" | "medium" | "heavy";
866
+ type?: "training" | "evaluation" | "split";
867
+ visibility?: "private" | "public";
868
+ negative_ratio?: number;
485
869
  }
486
870
 
487
871
  export async function generateClassification(
488
872
  req: GenerateClassificationRequest
489
- ): Promise<ApiResult<GenerateResponse>> {
490
- return request<GenerateResponse>("POST", "/felix/generate/classification", req);
873
+ ): Promise<ApiResult<GenerateJobStatus>> {
874
+ return generateDataset({
875
+ task_type: "classification",
876
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("classification"),
877
+ labels: req.labels,
878
+ num_examples: req.num_examples,
879
+ domain_description: req.domain_description,
880
+ seed: req.seed,
881
+ class_balance: req.class_balance,
882
+ session_id: req.session_id,
883
+ config_num_examples: req.config_num_examples,
884
+ temperature: req.temperature,
885
+ batch_size: req.batch_size,
886
+ constraints: req.constraints,
887
+ multi_label: req.multi_label,
888
+ project_id: req.project_id,
889
+ quality: req.quality,
890
+ type: req.type,
891
+ visibility: req.visibility,
892
+ negative_ratio: req.negative_ratio,
893
+ });
491
894
  }
492
895
 
493
896
  export interface LabelExistingClassificationRequest {
@@ -507,7 +910,7 @@ export interface LabelExistingClassificationRequest {
507
910
  export async function labelExistingClassification(
508
911
  req: LabelExistingClassificationRequest
509
912
  ): Promise<ApiResult<GenerateResponse>> {
510
- return request<GenerateResponse>("POST", "/felix/generate/classification/label-existing", req);
913
+ return request<GenerateResponse>("POST", "/generate/classification/label-existing", req);
511
914
  }
512
915
 
513
916
  export interface InferClassificationLabelsRequest {
@@ -517,31 +920,54 @@ export interface InferClassificationLabelsRequest {
517
920
  export async function inferClassificationLabels(
518
921
  req: InferClassificationLabelsRequest
519
922
  ): Promise<ApiResult<InferLabelsResponse>> {
520
- return request<InferLabelsResponse>("POST", "/felix/generate/classification/infer-labels", req);
923
+ return request<InferLabelsResponse>("POST", "/generate/classification/infer-labels", req);
521
924
  }
522
925
 
523
926
  // Custom Generation
524
927
  export interface GenerateCustomRequest {
525
928
  prompt: string;
526
- output_format: Record<string, unknown>;
929
+ output_format?: Record<string, unknown>;
930
+ infer_output_format?: boolean;
527
931
  num_examples?: number;
528
932
  seed?: number;
933
+ session_id?: string;
529
934
  min_criteria?: number;
530
935
  temperature?: number;
531
936
  constraints?: ConstraintRequest[];
532
937
  save_dataset?: boolean;
533
938
  dataset_name?: string;
939
+ project_id?: string;
940
+ quality?: "light" | "medium" | "heavy";
941
+ type?: "training" | "evaluation" | "split";
942
+ visibility?: "private" | "public";
534
943
  }
535
944
 
536
945
  export async function generateCustom(
537
946
  req: GenerateCustomRequest
538
- ): Promise<ApiResult<GenerateResponse>> {
539
- return request<GenerateResponse>("POST", "/felix/generate/custom", req);
947
+ ): Promise<ApiResult<GenerateJobStatus>> {
948
+ return generateDataset({
949
+ task_type: "custom",
950
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("custom"),
951
+ prompt: req.prompt,
952
+ output_format: req.output_format,
953
+ infer_output_format: req.infer_output_format,
954
+ num_examples: req.num_examples,
955
+ seed: req.seed,
956
+ session_id: req.session_id,
957
+ min_criteria: req.min_criteria,
958
+ temperature: req.temperature,
959
+ constraints: req.constraints,
960
+ project_id: req.project_id,
961
+ quality: req.quality,
962
+ type: req.type,
963
+ visibility: req.visibility,
964
+ });
540
965
  }
541
966
 
542
967
  // Records Generation
543
968
  export interface GenerateRecordsRequest {
544
969
  fields: RecordField[];
970
+ dataset_name?: string;
545
971
  num_examples?: number;
546
972
  domain_description?: string;
547
973
  seed?: number;
@@ -551,27 +977,46 @@ export interface GenerateRecordsRequest {
551
977
 
552
978
  export async function generateRecords(
553
979
  req: GenerateRecordsRequest
554
- ): Promise<ApiResult<GenerateResponse>> {
555
- return request<GenerateResponse>("POST", "/felix/generate/records", req);
980
+ ): Promise<ApiResult<GenerateJobStatus>> {
981
+ return generateDataset({
982
+ task_type: "records",
983
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("records"),
984
+ fields: req.fields,
985
+ num_examples: req.num_examples,
986
+ domain_description: req.domain_description,
987
+ seed: req.seed,
988
+ temperature: req.temperature,
989
+ constraints: req.constraints,
990
+ });
556
991
  }
557
992
 
558
993
  // Fields Generation
559
994
  export interface GenerateFieldsRequest {
560
995
  input_fields: RecordField[];
561
996
  output_fields: RecordField[];
997
+ dataset_name?: string;
562
998
  num_examples?: number;
563
999
  domain_description?: string;
564
1000
  seed?: number;
565
1001
  temperature?: number;
566
1002
  constraints?: ConstraintRequest[];
567
1003
  save_dataset?: boolean;
568
- dataset_name?: string;
569
1004
  }
570
1005
 
571
1006
  export async function generateFields(
572
1007
  req: GenerateFieldsRequest
573
- ): Promise<ApiResult<GenerateResponse>> {
574
- return request<GenerateResponse>("POST", "/felix/generate/fields", req);
1008
+ ): Promise<ApiResult<GenerateJobStatus>> {
1009
+ return generateDataset({
1010
+ task_type: "fields",
1011
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("fields"),
1012
+ input_fields: req.input_fields,
1013
+ output_fields: req.output_fields,
1014
+ num_examples: req.num_examples,
1015
+ domain_description: req.domain_description,
1016
+ seed: req.seed,
1017
+ temperature: req.temperature,
1018
+ constraints: req.constraints,
1019
+ });
575
1020
  }
576
1021
 
577
1022
  export interface LabelExistingFieldsRequest {
@@ -589,7 +1034,7 @@ export interface LabelExistingFieldsRequest {
589
1034
  export async function labelExistingFields(
590
1035
  req: LabelExistingFieldsRequest
591
1036
  ): Promise<ApiResult<GenerateResponse>> {
592
- return request<GenerateResponse>("POST", "/felix/generate/fields/label-existing", req);
1037
+ return request<GenerateResponse>("POST", "/generate/fields/label-existing", req);
593
1038
  }
594
1039
 
595
1040
  export interface InferFieldsRequest {
@@ -599,7 +1044,7 @@ export interface InferFieldsRequest {
599
1044
  export async function inferFields(
600
1045
  req: InferFieldsRequest
601
1046
  ): Promise<ApiResult<InferFieldsResponse>> {
602
- return request<InferFieldsResponse>("POST", "/felix/generate/fields/infer-fields", req);
1047
+ return request<InferFieldsResponse>("POST", "/generate/fields/infer-fields", req);
603
1048
  }
604
1049
 
605
1050
  // ─────────────────────────────────────────────────────────────────────────────
@@ -609,9 +1054,9 @@ export async function inferFields(
609
1054
  export interface TrainingJob {
610
1055
  id: string;
611
1056
  user_id: string;
1057
+ project_id?: string;
612
1058
  model_name?: string;
613
- dataset_ids: string[];
614
- train_dataset_paths: string[];
1059
+ datasets: Array<{ name: string; version?: string }>;
615
1060
  base_model: string;
616
1061
  validation_data_percentage: number;
617
1062
  nr_epochs: number;
@@ -619,12 +1064,22 @@ export interface TrainingJob {
619
1064
  batch_size: number;
620
1065
  trained_model_path?: string;
621
1066
  job_reference?: string;
1067
+ instance_type?: string;
622
1068
  status: string;
623
1069
  error_message?: string;
624
1070
  created_at: string;
625
1071
  updated_at: string;
626
1072
  started_at?: string;
627
1073
  completed_at?: string;
1074
+ model_auto_selected?: boolean;
1075
+ model_selection_reason?: string;
1076
+ task_type?: string;
1077
+ labels?: string[];
1078
+ example?: string;
1079
+ deployment_status?: string;
1080
+ metrics?: Record<string, unknown>;
1081
+ version_number?: string;
1082
+ root_job_id?: string;
628
1083
  }
629
1084
 
630
1085
  export interface TrainingJobListResponse {
@@ -633,8 +1088,14 @@ export interface TrainingJobListResponse {
633
1088
  count: number;
634
1089
  }
635
1090
 
636
- export async function listJobs(): Promise<ApiResult<TrainingJobListResponse>> {
637
- return request<TrainingJobListResponse>("GET", "/felix/training-jobs");
1091
+ export async function listJobs(
1092
+ options: { status?: string } = {}
1093
+ ): Promise<ApiResult<TrainingJobListResponse>> {
1094
+ const params = new URLSearchParams();
1095
+ if (options.status) params.set("status", options.status);
1096
+ const query = params.toString();
1097
+ const url = query ? `/felix/training-jobs?${query}` : "/felix/training-jobs";
1098
+ return request<TrainingJobListResponse>("GET", url);
638
1099
  }
639
1100
 
640
1101
  export async function getJob(jobId: string): Promise<ApiResult<TrainingJob>> {
@@ -645,10 +1106,20 @@ export interface TrainingJobCreateRequest {
645
1106
  model_name: string;
646
1107
  datasets: DatasetRef[];
647
1108
  base_model?: string;
1109
+ auto_select_model?: boolean;
648
1110
  validation_data_percentage?: number;
649
1111
  nr_epochs?: number;
650
1112
  learning_rate?: number;
651
1113
  batch_size?: number;
1114
+ save_steps?: number;
1115
+ wandb_api_key?: string;
1116
+ project_id?: string;
1117
+ training_type?: "full" | "lora";
1118
+ lora_r?: number;
1119
+ lora_alpha?: number;
1120
+ lora_dropout?: number;
1121
+ enable_probe_override?: boolean;
1122
+ probe_delta_threshold?: number;
652
1123
  }
653
1124
 
654
1125
  export async function createJob(
@@ -661,15 +1132,15 @@ export interface TrainingLog {
661
1132
  id: string;
662
1133
  job_id: string;
663
1134
  timestamp: string;
664
- level: "INFO" | "WARNING" | "ERROR" | "DEBUG";
1135
+ level: string;
665
1136
  message: string;
666
- source: "stdout" | "stderr";
1137
+ source: string;
667
1138
  }
668
1139
 
669
1140
  export interface TrainingLogsResponse {
670
- success: boolean;
1141
+ job_id: string;
671
1142
  logs: TrainingLog[];
672
- count: number;
1143
+ total_logs: number;
673
1144
  }
674
1145
 
675
1146
  export async function getJobLogs(
@@ -682,6 +1153,103 @@ export async function deleteJob(jobId: string): Promise<ApiResult> {
682
1153
  return request("DELETE", `/felix/training-jobs/${jobId}`);
683
1154
  }
684
1155
 
1156
+ export interface StopJobResponse {
1157
+ success: boolean;
1158
+ message: string;
1159
+ job_id: string;
1160
+ status: string;
1161
+ }
1162
+
1163
+ export async function stopJob(
1164
+ jobId: string
1165
+ ): Promise<ApiResult<StopJobResponse>> {
1166
+ return request<StopJobResponse>("POST", `/felix/training-jobs/${jobId}/stop`);
1167
+ }
1168
+
1169
+ export interface TerminateJobResponse {
1170
+ success: boolean;
1171
+ message: string;
1172
+ job_id: string;
1173
+ deleted_checkpoints: number;
1174
+ }
1175
+
1176
+ export async function terminateJob(
1177
+ jobId: string
1178
+ ): Promise<ApiResult<TerminateJobResponse>> {
1179
+ return request<TerminateJobResponse>(
1180
+ "POST",
1181
+ `/felix/training-jobs/${jobId}/terminate`
1182
+ );
1183
+ }
1184
+
1185
+ export async function syncJob(jobId: string): Promise<ApiResult<TrainingJob>> {
1186
+ return request<TrainingJob>("POST", `/felix/training-jobs/${jobId}/sync`);
1187
+ }
1188
+
1189
+ export interface Checkpoint {
1190
+ id: string;
1191
+ job_id: string;
1192
+ epoch: number;
1193
+ step?: number;
1194
+ training_loss?: number;
1195
+ validation_loss?: number;
1196
+ accuracy?: number;
1197
+ learning_rate?: number;
1198
+ gpu_memory_used?: number;
1199
+ gpu_memory_total?: number;
1200
+ }
1201
+
1202
+ export interface CheckpointListResponse {
1203
+ success: boolean;
1204
+ checkpoints: Checkpoint[];
1205
+ count: number;
1206
+ }
1207
+
1208
+ export async function listCheckpoints(
1209
+ jobId: string
1210
+ ): Promise<ApiResult<CheckpointListResponse>> {
1211
+ return request<CheckpointListResponse>(
1212
+ "GET",
1213
+ `/felix/training-jobs/${jobId}/checkpoints`
1214
+ );
1215
+ }
1216
+
1217
+ export interface DeployCheckpointResponse {
1218
+ success: boolean;
1219
+ message: string;
1220
+ job_id: string;
1221
+ checkpoint_id: string;
1222
+ mme_path: string;
1223
+ }
1224
+
1225
+ export async function deployCheckpoint(
1226
+ jobId: string,
1227
+ checkpointId: string
1228
+ ): Promise<ApiResult<DeployCheckpointResponse>> {
1229
+ return request<DeployCheckpointResponse>(
1230
+ "POST",
1231
+ `/felix/training-jobs/${jobId}/checkpoints/${checkpointId}/deploy`
1232
+ );
1233
+ }
1234
+
1235
+ export interface UpdateModelNameResponse {
1236
+ success: boolean;
1237
+ message: string;
1238
+ job_id: string;
1239
+ model_name: string;
1240
+ }
1241
+
1242
+ export async function updateModelName(
1243
+ jobId: string,
1244
+ modelName: string
1245
+ ): Promise<ApiResult<UpdateModelNameResponse>> {
1246
+ return request<UpdateModelNameResponse>(
1247
+ "PATCH",
1248
+ `/felix/training-jobs/${jobId}/model-name`,
1249
+ { model_name: modelName }
1250
+ );
1251
+ }
1252
+
685
1253
  // ─────────────────────────────────────────────────────────────────────────────
686
1254
  // Models
687
1255
  // ─────────────────────────────────────────────────────────────────────────────
@@ -707,8 +1275,16 @@ export interface DeployedModelsListResponse {
707
1275
  count: number;
708
1276
  }
709
1277
 
710
- export async function listModels(): Promise<ApiResult<DeployedModelsListResponse>> {
711
- return request<DeployedModelsListResponse>("GET", "/felix/models");
1278
+ export async function listModels(
1279
+ options: { includeBase?: boolean } = {}
1280
+ ): Promise<ApiResult<DeployedModelsListResponse>> {
1281
+ const params = new URLSearchParams();
1282
+ if (options.includeBase !== undefined) {
1283
+ params.set("include_base", String(options.includeBase));
1284
+ }
1285
+ const query = params.toString();
1286
+ const url = query ? `/felix/models?${query}` : "/felix/models";
1287
+ return request<DeployedModelsListResponse>("GET", url);
712
1288
  }
713
1289
 
714
1290
  export async function deleteModel(jobId: string): Promise<ApiResult> {
@@ -791,7 +1367,12 @@ export async function listAllModels(): Promise<ApiResult<AllModelsResponse>> {
791
1367
  }
792
1368
 
793
1369
  export interface ModelDownloadResponse {
1370
+ success?: boolean;
1371
+ job_id?: string;
794
1372
  download_url: string;
1373
+ expires_in_seconds?: number;
1374
+ file_name?: string;
1375
+ message?: string;
795
1376
  }
796
1377
 
797
1378
  export async function downloadModel(
@@ -804,41 +1385,231 @@ export async function downloadModel(
804
1385
  }
805
1386
 
806
1387
  // ─────────────────────────────────────────────────────────────────────────────
807
- // Evaluations
1388
+ // Inference
808
1389
  // ─────────────────────────────────────────────────────────────────────────────
809
1390
 
810
- export interface Evaluation {
811
- id: string;
812
- user_id: string;
813
- dataset_id: string;
814
- model_id?: string;
815
- status: string;
816
- results?: unknown;
817
- created_at: string;
818
- completed_at?: string;
819
- predictions?: Array<Record<string, unknown>>;
1391
+ export interface EncoderInferenceRequest {
1392
+ model_id: string;
1393
+ task: "extract_entities" | "classify_text" | "extract_json" | "schema";
1394
+ text: string | string[];
1395
+ schema: string[] | Record<string, unknown>;
1396
+ threshold?: number;
1397
+ include_confidence?: boolean;
1398
+ include_spans?: boolean;
1399
+ format_results?: boolean;
820
1400
  }
821
1401
 
822
- export async function getEvaluation(
823
- evalId: string
824
- ): Promise<ApiResult<Evaluation>> {
825
- return request<Evaluation>("GET", `/felix/evaluations/${evalId}`);
1402
+ export interface GenerateInferenceRequest {
1403
+ model_id: string;
1404
+ task: "generate";
1405
+ messages: Array<{ role: "system" | "user" | "assistant"; content: string }>;
1406
+ max_tokens?: number;
1407
+ temperature?: number;
1408
+ top_p?: number;
826
1409
  }
827
1410
 
828
- export interface EvaluationCreateRequest {
829
- dataset: DatasetRef;
1411
+ export type InferenceRequest = EncoderInferenceRequest | GenerateInferenceRequest;
1412
+
1413
+ export interface EncoderInferenceResponse {
1414
+ type: "encoder";
1415
+ result: Record<string, unknown> | unknown[];
830
1416
  model_id: string;
1417
+ latency_ms: number;
1418
+ token_usage: number;
1419
+ model_used: string;
1420
+ }
1421
+
1422
+ export interface GenerateInferenceResponse {
1423
+ type: "decoder";
1424
+ completion: string;
1425
+ model_id: string;
1426
+ latency_ms: number;
1427
+ }
1428
+
1429
+ export type InferenceResponse = EncoderInferenceResponse | GenerateInferenceResponse;
1430
+
1431
+ export async function runInference(
1432
+ req: InferenceRequest
1433
+ ): Promise<ApiResult<InferenceResponse>> {
1434
+ return request<InferenceResponse>("POST", "/inference", req);
1435
+ }
1436
+
1437
+ export interface BaseModelInfo {
1438
+ id: string;
1439
+ name?: string;
1440
+ label?: string;
1441
+ type: "encoder" | "decoder" | string;
1442
+ description?: string;
1443
+ }
1444
+
1445
+ export interface BaseModelsResponse {
1446
+ models: BaseModelInfo[];
1447
+ }
1448
+
1449
+ export async function listBaseModels(): Promise<
1450
+ ApiResult<BaseModelsResponse | BaseModelInfo[]>
1451
+ > {
1452
+ return request<BaseModelsResponse | BaseModelInfo[]>("GET", "/inference/base-models");
1453
+ }
1454
+
1455
+ // ─────────────────────────────────────────────────────────────────────────────
1456
+ // Adaptive Fine-tuning
1457
+ // ─────────────────────────────────────────────────────────────────────────────
1458
+
1459
+ export interface AdaptiveFinetuningHistoryItem {
1460
+ role: "user" | "assistant" | "system" | string;
1461
+ content: string;
1462
+ }
1463
+
1464
+ export interface AdaptiveFinetuningQueryFilters {
1465
+ start_time?: string;
1466
+ end_time?: string;
1467
+ project_id?: string;
1468
+ model_id?: string;
1469
+ }
1470
+
1471
+ export interface AdaptiveFinetuningChatRequest {
1472
+ message: string;
1473
+ conversation_id?: string;
1474
+ history?: AdaptiveFinetuningHistoryItem[];
1475
+ filters?: AdaptiveFinetuningQueryFilters;
1476
+ }
1477
+
1478
+ export interface AdaptiveFinetuningChatResponse {
1479
+ answer: string;
1480
+ conversation_id: string;
1481
+ tool_calls_made?: number;
1482
+ }
1483
+
1484
+ export async function adaptiveFinetuningChat(
1485
+ req: AdaptiveFinetuningChatRequest
1486
+ ): Promise<ApiResult<AdaptiveFinetuningChatResponse>> {
1487
+ return request<AdaptiveFinetuningChatResponse>("POST", "/adaptive-finetuning/chat", req);
1488
+ }
1489
+
1490
+ // ─────────────────────────────────────────────────────────────────────────────
1491
+ // Decoder Generation
1492
+ // ─────────────────────────────────────────────────────────────────────────────
1493
+
1494
+ export interface GenerateDecoderRequest {
1495
+ domain_description: string;
1496
+ instruction?: string;
1497
+ num_examples?: number;
1498
+ temperature?: number;
1499
+ quality?: "light" | "medium" | "heavy";
1500
+ constraints?: ConstraintRequest[];
1501
+ save_dataset?: boolean;
1502
+ dataset_name?: string;
1503
+ project_id?: string;
1504
+ session_id?: string;
1505
+ config_num_examples?: number;
1506
+ min_criteria?: number;
1507
+ target_choices?: number;
1508
+ type?: "training" | "evaluation" | "split";
1509
+ visibility?: "private" | "public";
1510
+ }
1511
+
1512
+ export async function generateDecoder(
1513
+ req: GenerateDecoderRequest
1514
+ ): Promise<ApiResult<GenerateJobStatus>> {
1515
+ return generateDataset({
1516
+ task_type: "decoder",
1517
+ dataset_name: req.dataset_name ?? makeDefaultDatasetName("decoder"),
1518
+ domain_description: req.domain_description,
1519
+ instruction: req.instruction,
1520
+ num_examples: req.num_examples,
1521
+ temperature: req.temperature,
1522
+ quality: req.quality,
1523
+ constraints: req.constraints,
1524
+ project_id: req.project_id,
1525
+ session_id: req.session_id,
1526
+ config_num_examples: req.config_num_examples,
1527
+ min_criteria: req.min_criteria,
1528
+ target_choices: req.target_choices,
1529
+ type: req.type,
1530
+ visibility: req.visibility,
1531
+ });
1532
+ }
1533
+
1534
+ // ─────────────────────────────────────────────────────────────────────────────
1535
+ // Evaluations
1536
+ // ─────────────────────────────────────────────────────────────────────────────
1537
+
1538
+ export interface Evaluation {
1539
+ id: string;
1540
+ user_id: string;
1541
+ project_id?: string;
1542
+ model_id: string;
1543
+ dataset_name: string;
1544
+ dataset_version: string;
1545
+ provider?: string;
1546
+ model_name?: string;
1547
+ f1_score?: number;
1548
+ precision_score?: number;
1549
+ recall_score?: number;
1550
+ accuracy?: number;
1551
+ validation_loss?: number;
1552
+ total_tokens?: number;
1553
+ total_cost_usd?: number;
1554
+ total_latency_ms?: number;
1555
+ max_examples?: number;
1556
+ seed?: number;
1557
+ sample_count?: number;
1558
+ evaluation_time_ms?: number;
1559
+ status: string;
1560
+ job_reference?: string;
1561
+ error_message?: string;
1562
+ created_at: string;
1563
+ completed_at?: string;
1564
+ }
1565
+
1566
+ export interface EvaluationListResponse {
1567
+ success: boolean;
1568
+ evaluations: Evaluation[];
1569
+ count: number;
1570
+ }
1571
+
1572
+ export async function listEvaluations(): Promise<
1573
+ ApiResult<EvaluationListResponse>
1574
+ > {
1575
+ return request<EvaluationListResponse>("GET", "/felix/evaluations");
1576
+ }
1577
+
1578
+ export async function getEvaluation(
1579
+ evalId: string
1580
+ ): Promise<ApiResult<Evaluation>> {
1581
+ return request<Evaluation>("GET", `/felix/evaluations/${evalId}`);
1582
+ }
1583
+
1584
+ export interface EvaluationCreateRequest {
1585
+ dataset: DatasetRef;
1586
+ model_id: string;
1587
+ base_model?: string;
1588
+ comparison_models?: string[];
1589
+ dataset_names?: string[];
1590
+ provider?: "felix" | "openai" | "together";
1591
+ max_examples?: number;
1592
+ seed?: number;
831
1593
  task_type?: string;
832
1594
  text_column?: string;
833
1595
  label_column?: string;
1596
+ project_id?: string;
1597
+ }
1598
+
1599
+ export interface EvaluationCreateResponse {
1600
+ success: boolean;
1601
+ evaluations: Evaluation[];
1602
+ count: number;
834
1603
  }
835
1604
 
836
1605
  export async function createEvaluation(
837
1606
  req: EvaluationCreateRequest
838
- ): Promise<ApiResult<Evaluation>> {
1607
+ ): Promise<ApiResult<EvaluationCreateResponse>> {
839
1608
  const { dataset, ...rest } = req;
840
- return request<Evaluation>("POST", "/felix/evaluations", {
1609
+ const baseModel = req.base_model ?? req.model_id;
1610
+ return request<EvaluationCreateResponse>("POST", "/felix/evaluations", {
841
1611
  ...rest,
1612
+ base_model: baseModel,
842
1613
  dataset_name: dataset.name,
843
1614
  dataset_version: dataset.version,
844
1615
  });
@@ -853,8 +1624,8 @@ export interface ModelWithEvaluation {
853
1624
 
854
1625
  export interface DatasetEvaluationsResponse {
855
1626
  success: boolean;
856
- dataset_id: string;
857
1627
  dataset_name: string;
1628
+ dataset_version: string;
858
1629
  sample_count: number;
859
1630
  models: ModelWithEvaluation[];
860
1631
  count: number;
@@ -1088,13 +1859,15 @@ export interface HuggingFacePushRequest {
1088
1859
  hf_token: string;
1089
1860
  repo_id: string;
1090
1861
  private?: boolean;
1862
+ commit_message?: string;
1091
1863
  }
1092
1864
 
1093
1865
  export interface HuggingFacePushResponse {
1094
1866
  success: boolean;
1095
- repo_url: string;
1867
+ url: string;
1096
1868
  repo_id: string;
1097
- message?: string;
1869
+ version: string;
1870
+ message: string;
1098
1871
  }
1099
1872
 
1100
1873
  export async function pushDatasetToHub(
@@ -1112,13 +1885,15 @@ export interface HuggingFacePushModelRequest {
1112
1885
  hf_token: string;
1113
1886
  repo_id: string;
1114
1887
  private?: boolean;
1888
+ commit_message?: string;
1115
1889
  }
1116
1890
 
1117
1891
  export interface HuggingFacePushModelResponse {
1118
1892
  success: boolean;
1119
- repo_url: string;
1893
+ url: string;
1120
1894
  repo_id: string;
1121
- message?: string;
1895
+ job_id: string;
1896
+ message: string;
1122
1897
  }
1123
1898
 
1124
1899
  export async function pushModelToHub(
@@ -1133,26 +1908,737 @@ export async function pushModelToHub(
1133
1908
  }
1134
1909
 
1135
1910
  export interface HuggingFacePullRequest {
1136
- hf_token?: string;
1137
1911
  repo_id: string;
1138
- dataset_name?: string;
1912
+ hf_token: string;
1139
1913
  revision?: string;
1914
+ name?: string;
1915
+ }
1916
+
1917
+ export async function pullDatasetFromHub(
1918
+ options: HuggingFacePullRequest
1919
+ ): Promise<ApiResult<Dataset>> {
1920
+ return request<Dataset>(
1921
+ "POST",
1922
+ "/felix/datasets/pull-from-hub",
1923
+ options
1924
+ );
1925
+ }
1926
+
1927
+ // ─────────────────────────────────────────────────────────────────────────────
1928
+ // Constraints Generation
1929
+ // ─────────────────────────────────────────────────────────────────────────────
1930
+
1931
+ export interface GenerateNERConstraintsRequest {
1932
+ labels: string[];
1933
+ domain_description?: string;
1934
+ min_criteria?: number;
1935
+ }
1936
+
1937
+ export interface GenerateClassificationConstraintsRequest {
1938
+ labels: string[];
1939
+ domain_description?: string;
1940
+ min_criteria?: number;
1941
+ }
1942
+
1943
+ export interface GenerateRecordsConstraintsRequest {
1944
+ fields: RecordField[];
1945
+ domain_description?: string;
1946
+ min_criteria?: number;
1947
+ }
1948
+
1949
+ export interface GenerateConstraintsResponse {
1950
+ success: boolean;
1951
+ constraints: ConstraintRequest[];
1952
+ count: number;
1953
+ token_usage?: number;
1954
+ }
1955
+
1956
+ export async function generateNERConstraints(
1957
+ req: GenerateNERConstraintsRequest
1958
+ ): Promise<ApiResult<GenerateConstraintsResponse>> {
1959
+ return request<GenerateConstraintsResponse>(
1960
+ "POST",
1961
+ "/felix/constraints/ner",
1962
+ req
1963
+ );
1964
+ }
1965
+
1966
+ export async function generateClassificationConstraints(
1967
+ req: GenerateClassificationConstraintsRequest
1968
+ ): Promise<ApiResult<GenerateConstraintsResponse>> {
1969
+ return request<GenerateConstraintsResponse>(
1970
+ "POST",
1971
+ "/felix/constraints/classification",
1972
+ req
1973
+ );
1974
+ }
1975
+
1976
+ export async function generateRecordsConstraints(
1977
+ req: GenerateRecordsConstraintsRequest
1978
+ ): Promise<ApiResult<GenerateConstraintsResponse>> {
1979
+ return request<GenerateConstraintsResponse>(
1980
+ "POST",
1981
+ "/felix/constraints/records",
1982
+ req
1983
+ );
1984
+ }
1985
+
1986
+ export interface ExpandConstraintChoicesRequest {
1987
+ constraint: ConstraintRequest;
1988
+ task_description: string;
1989
+ max_count?: number;
1990
+ }
1991
+
1992
+ export interface ExpandConstraintChoicesResponse {
1993
+ success: boolean;
1994
+ constraint: ConstraintRequest;
1995
+ expanded_choices: string[];
1996
+ count: number;
1997
+ token_usage?: number;
1998
+ }
1999
+
2000
+ export async function expandConstraintChoices(
2001
+ req: ExpandConstraintChoicesRequest
2002
+ ): Promise<ApiResult<ExpandConstraintChoicesResponse>> {
2003
+ return request<ExpandConstraintChoicesResponse>(
2004
+ "POST",
2005
+ "/felix/constraints/expand",
2006
+ req
2007
+ );
2008
+ }
2009
+
2010
+ // ─────────────────────────────────────────────────────────────────────────────
2011
+ // Dataset Augmentation
2012
+ // ─────────────────────────────────────────────────────────────────────────────
2013
+
2014
+ export interface AugmentationOperation {
2015
+ type: "remove_duplicates" | "remove_outliers" | "balance";
2016
+ enabled: boolean;
2017
+ }
2018
+
2019
+ export interface DatasetAugmentationRequest {
2020
+ task_type: "ner" | "classification";
2021
+ operations: AugmentationOperation[];
2022
+ new_dataset_name: string;
2023
+ dataset_name?: string;
2024
+ dataset_version?: string;
2025
+ dataset?: Record<string, unknown>[];
2026
+ target_distribution?: Record<string, number>;
2027
+ domain_description?: string;
2028
+ labels?: string[];
1140
2029
  }
1141
2030
 
1142
- export interface HuggingFacePullResponse {
2031
+ export interface DatasetAugmentationResponse {
1143
2032
  success: boolean;
2033
+ original_dataset_name?: string;
2034
+ original_dataset_version?: string;
2035
+ new_dataset: Dataset;
2036
+ modifications: Record<string, unknown>;
2037
+ distribution_comparison: Record<string, unknown>[];
2038
+ message: string;
2039
+ }
2040
+
2041
+ export async function augmentDataset(
2042
+ req: DatasetAugmentationRequest
2043
+ ): Promise<ApiResult<DatasetAugmentationResponse>> {
2044
+ return request<DatasetAugmentationResponse>(
2045
+ "POST",
2046
+ "/felix/dataset/augment",
2047
+ req
2048
+ );
2049
+ }
2050
+
2051
+ // ─────────────────────────────────────────────────────────────────────────────
2052
+ // Dataset Query
2053
+ // ─────────────────────────────────────────────────────────────────────────────
2054
+
2055
+ export interface DatasetQueryRequest {
2056
+ dataset_name: string;
2057
+ code: string;
2058
+ version?: string;
2059
+ timeout?: number;
2060
+ max_rows_returned?: number;
2061
+ }
2062
+
2063
+ export interface DatasetQueryResponse {
2064
+ success: boolean;
2065
+ dataset_name: string;
2066
+ dataset_version: string;
2067
+ result: unknown;
2068
+ result_type: "dataframe" | "series" | "scalar" | "string" | "none";
2069
+ row_count?: number;
2070
+ columns?: string[];
2071
+ execution_time_ms: number;
2072
+ truncated: boolean;
2073
+ message: string;
2074
+ }
2075
+
2076
+ export async function queryDataset(
2077
+ req: DatasetQueryRequest
2078
+ ): Promise<ApiResult<DatasetQueryResponse>> {
2079
+ return request<DatasetQueryResponse>("POST", "/felix/dataset/query", req);
2080
+ }
2081
+
2082
+ // ─────────────────────────────────────────────────────────────────────────────
2083
+ // Dataset Grow
2084
+ // ─────────────────────────────────────────────────────────────────────────────
2085
+
2086
+ export interface GrowDatasetRequest {
2087
+ dataset_id: string;
2088
+ new_dataset_name: string;
2089
+ target_size: number;
2090
+ class_balance?: boolean;
2091
+ domain_description?: string;
2092
+ temperature?: number;
2093
+ session_id?: string;
2094
+ }
2095
+
2096
+ export interface GrowDatasetResponse {
2097
+ success: boolean;
2098
+ dataset: Record<string, unknown>;
2099
+ original_size: number;
2100
+ new_size: number;
2101
+ generated_count: number;
2102
+ distribution: Record<string, number>;
2103
+ token_usage?: number;
2104
+ }
2105
+
2106
+ export async function growDataset(
2107
+ req: GrowDatasetRequest
2108
+ ): Promise<ApiResult<GrowDatasetResponse>> {
2109
+ return request<GrowDatasetResponse>("POST", "/felix/dataset/grow", req);
2110
+ }
2111
+
2112
+ // ─────────────────────────────────────────────────────────────────────────────
2113
+ // Embeddings
2114
+ // ─────────────────────────────────────────────────────────────────────────────
2115
+
2116
+ export interface EmbeddingsRequest {
2117
+ text: string;
2118
+ model?: string;
2119
+ }
2120
+
2121
+ export interface EmbeddingsResponse {
2122
+ embedding: number[];
2123
+ }
2124
+
2125
+ export async function createEmbeddings(
2126
+ req: EmbeddingsRequest
2127
+ ): Promise<ApiResult<EmbeddingsResponse>> {
2128
+ return request<EmbeddingsResponse>("POST", "/felix/embeddings", req);
2129
+ }
2130
+
2131
+ // ─────────────────────────────────────────────────────────────────────────────
2132
+ // Activity
2133
+ // ─────────────────────────────────────────────────────────────────────────────
2134
+
2135
+ export interface ActivityEvent {
2136
+ id: string;
2137
+ type: "project" | "dataset" | "model" | "evaluation" | "notebook" | "deployment";
2138
+ name: string;
2139
+ item_id: string;
2140
+ created_by: string;
2141
+ created_at: string;
2142
+ project_id?: string;
2143
+ }
2144
+
2145
+ export interface ActivityLogResponse {
2146
+ success: boolean;
2147
+ events?: ActivityEvent[];
2148
+ count: number;
2149
+ }
2150
+
2151
+ export async function listActivity(
2152
+ options: { limit?: number } = {}
2153
+ ): Promise<ApiResult<ActivityLogResponse>> {
2154
+ const params = new URLSearchParams();
2155
+ if (options.limit) params.set("limit", String(options.limit));
2156
+ const query = params.toString();
2157
+ const url = query ? `/felix/activity?${query}` : "/felix/activity";
2158
+ return request<ActivityLogResponse>("GET", url);
2159
+ }
2160
+
2161
+ // ─────────────────────────────────────────────────────────────────────────────
2162
+ // Projects
2163
+ // ─────────────────────────────────────────────────────────────────────────────
2164
+
2165
+ export interface ProjectCreateRequest {
2166
+ name: string;
2167
+ icon?: string;
2168
+ repo?: string;
2169
+ description?: string;
2170
+ selected_model_id?: string;
2171
+ example?: Record<string, unknown>;
2172
+ }
2173
+
2174
+ export interface ProjectUpdateRequest {
2175
+ name?: string;
2176
+ icon?: string;
2177
+ repo?: string;
2178
+ description?: string;
2179
+ selected_model_id?: string;
2180
+ }
2181
+
2182
+ export interface ProjectResponse {
2183
+ id: string;
2184
+ user_id: string;
2185
+ name: string;
2186
+ icon?: string;
2187
+ repo?: string;
2188
+ description?: string;
2189
+ selected_model_id?: string;
2190
+ example?: Record<string, unknown>;
2191
+ created_at: string;
2192
+ updated_at: string;
2193
+ }
2194
+
2195
+ export interface ProjectListResponse {
2196
+ success: boolean;
2197
+ projects: ProjectResponse[];
2198
+ count: number;
2199
+ }
2200
+
2201
+ export interface ProjectDeleteResponse {
2202
+ success: boolean;
2203
+ message: string;
2204
+ project_id: string;
2205
+ }
2206
+
2207
+ export interface ProjectDatasetCountResponse {
2208
+ project_id: string;
2209
+ dataset_count: number;
2210
+ can_delete: boolean;
2211
+ }
2212
+
2213
+ export interface QualityMetricsResponse {
2214
+ project_id: string;
2215
+ pass_count: number;
2216
+ fail_count: number;
2217
+ uncertain_count: number;
2218
+ total_judged: number;
2219
+ pass_rate: number;
2220
+ fail_rate: number;
2221
+ }
2222
+
2223
+ export async function listProjects(): Promise<ApiResult<ProjectListResponse>> {
2224
+ return request<ProjectListResponse>("GET", "/projects");
2225
+ }
2226
+
2227
+ export async function createProject(
2228
+ req: ProjectCreateRequest
2229
+ ): Promise<ApiResult<ProjectResponse>> {
2230
+ return request<ProjectResponse>("POST", "/projects", req);
2231
+ }
2232
+
2233
+ export async function getProject(projectId: string): Promise<ApiResult<ProjectResponse>> {
2234
+ return request<ProjectResponse>("GET", `/projects/${projectId}`);
2235
+ }
2236
+
2237
+ export async function updateProject(
2238
+ projectId: string,
2239
+ req: ProjectUpdateRequest
2240
+ ): Promise<ApiResult<ProjectResponse>> {
2241
+ return request<ProjectResponse>("PATCH", `/projects/${projectId}`, req);
2242
+ }
2243
+
2244
+ export async function deleteProject(
2245
+ projectId: string
2246
+ ): Promise<ApiResult<ProjectDeleteResponse>> {
2247
+ return request<ProjectDeleteResponse>("DELETE", `/projects/${projectId}`);
2248
+ }
2249
+
2250
+ export async function getProjectDatasetCount(
2251
+ projectId: string
2252
+ ): Promise<ApiResult<ProjectDatasetCountResponse>> {
2253
+ return request<ProjectDatasetCountResponse>(
2254
+ "GET",
2255
+ `/projects/${projectId}/dataset-count`
2256
+ );
2257
+ }
2258
+
2259
+ export async function getProjectQualityMetrics(
2260
+ projectId: string
2261
+ ): Promise<ApiResult<QualityMetricsResponse>> {
2262
+ return request<QualityMetricsResponse>(
2263
+ "GET",
2264
+ `/projects/${projectId}/quality-metrics`
2265
+ );
2266
+ }
2267
+
2268
+ // ─────────────────────────────────────────────────────────────────────────────
2269
+ // Presets
2270
+ // ─────────────────────────────────────────────────────────────────────────────
2271
+
2272
+ export interface PresetMetadata {
2273
+ id: string;
2274
+ name: string;
2275
+ description: string;
2276
+ task_type: string;
2277
+ tags?: string[];
2278
+ }
2279
+
2280
+ export interface PresetDetail {
2281
+ id: string;
2282
+ name: string;
2283
+ description: string;
2284
+ task_type: string;
2285
+ config: Record<string, unknown>;
2286
+ tags?: string[];
2287
+ }
2288
+
2289
+ export async function listPresets(): Promise<ApiResult<PresetMetadata[]>> {
2290
+ return request<PresetMetadata[]>("GET", "/felix/presets");
2291
+ }
2292
+
2293
+ export async function getPreset(
2294
+ presetId: string
2295
+ ): Promise<ApiResult<PresetDetail>> {
2296
+ return request<PresetDetail>("GET", `/felix/presets/${presetId}`);
2297
+ }
2298
+
2299
+ // ─────────────────────────────────────────────────────────────────────────────
2300
+ // Adaptive Annotation
2301
+ // ─────────────────────────────────────────────────────────────────────────────
2302
+
2303
+ export interface StartAnnotationSessionRequest {
2304
+ column_name: string;
2305
+ input_columns: string[];
2306
+ task_description: string;
2307
+ task_type?: "classification" | "scoring" | "entity_extraction" | "json_extraction";
2308
+ output_dataset_name?: string;
2309
+ possible_labels?: Array<{ name: string; description?: string }>;
2310
+ scoring_criteria?: Array<Record<string, unknown>>;
2311
+ entity_types?: Array<{ name: string; description?: string }>;
2312
+ json_schema?: Array<Record<string, unknown>>;
2313
+ auto_accept_threshold?: number;
2314
+ }
2315
+
2316
+ export interface StartAnnotationSessionResponse {
2317
+ success: boolean;
2318
+ session_id: string;
2319
+ dataset_id: string;
2320
+ task_type: string;
2321
+ total_items: number;
2322
+ }
2323
+
2324
+ export async function startAnnotationSession(
2325
+ datasetId: string,
2326
+ req: StartAnnotationSessionRequest
2327
+ ): Promise<ApiResult<StartAnnotationSessionResponse>> {
2328
+ return request<StartAnnotationSessionResponse>(
2329
+ "POST",
2330
+ `/felix/datasets/annotate/${datasetId}/start`,
2331
+ req
2332
+ );
2333
+ }
2334
+
2335
+ export interface NextAnnotationItemResponse {
2336
+ complete: boolean;
2337
+ rate_limited?: boolean;
2338
+ auto_accepted_in_call?: number;
2339
+ item_id?: number;
2340
+ item_data?: Record<string, unknown>;
2341
+ task_type?: string;
2342
+ task_description?: string;
2343
+ possible_labels?: string[];
2344
+ scoring_criteria?: Array<Record<string, unknown>>;
2345
+ entity_types?: Array<Record<string, unknown>>;
2346
+ json_schema?: Array<Record<string, unknown>>;
2347
+ suggestion?: Record<string, unknown>;
2348
+ stats?: Record<string, unknown>;
2349
+ }
2350
+
2351
+ export async function getNextAnnotationItem(
2352
+ datasetId: string,
2353
+ options: { maxAutoAccept?: number } = {}
2354
+ ): Promise<ApiResult<NextAnnotationItemResponse>> {
2355
+ const params = new URLSearchParams();
2356
+ if (options.maxAutoAccept !== undefined) {
2357
+ params.set("max_auto_accept", String(options.maxAutoAccept));
2358
+ }
2359
+ const query = params.toString();
2360
+ const url = `/felix/datasets/annotate/${datasetId}/next${query ? `?${query}` : ""}`;
2361
+ return request<NextAnnotationItemResponse>("GET", url);
2362
+ }
2363
+
2364
+ export interface AnnotationFeedbackRequest {
2365
+ item_id: number;
2366
+ thumb: "up" | "down";
2367
+ corrected_label?: string;
2368
+ corrected_criteria?: Record<string, string>;
2369
+ corrected_entities?: string[][];
2370
+ corrected_json?: Record<string, unknown>;
2371
+ }
2372
+
2373
+ export interface AnnotationFeedbackResponse {
2374
+ success: boolean;
2375
+ item_id: number;
2376
+ action: "up" | "down";
2377
+ was_correct: boolean;
2378
+ similar_items_queued?: number;
2379
+ stats?: Record<string, unknown>;
2380
+ }
2381
+
2382
+ export async function submitAnnotationFeedback(
2383
+ datasetId: string,
2384
+ req: AnnotationFeedbackRequest
2385
+ ): Promise<ApiResult<AnnotationFeedbackResponse>> {
2386
+ return request<AnnotationFeedbackResponse>(
2387
+ "POST",
2388
+ `/felix/datasets/annotate/${datasetId}/feedback`,
2389
+ req
2390
+ );
2391
+ }
2392
+
2393
+ export interface AnnotationStatsResponse {
2394
+ total_items: number;
2395
+ annotated: number;
2396
+ remaining: number;
2397
+ auto_accepted: number;
2398
+ human_annotated: number;
2399
+ auto_accept_rate: number;
2400
+ label_stats?: Record<string, unknown>;
2401
+ }
2402
+
2403
+ export async function getAnnotationStats(
2404
+ datasetId: string
2405
+ ): Promise<ApiResult<AnnotationStatsResponse>> {
2406
+ return request<AnnotationStatsResponse>(
2407
+ "GET",
2408
+ `/felix/datasets/annotate/${datasetId}/stats`
2409
+ );
2410
+ }
2411
+
2412
+ export interface AnnotationDownloadResponse {
2413
+ data: Record<string, unknown>[];
2414
+ columns: string[];
2415
+ rows: number;
2416
+ stats?: AnnotationStatsResponse;
2417
+ }
2418
+
2419
+ export async function downloadAnnotatedData(
2420
+ datasetId: string
2421
+ ): Promise<ApiResult<AnnotationDownloadResponse>> {
2422
+ return request<AnnotationDownloadResponse>(
2423
+ "GET",
2424
+ `/felix/datasets/annotate/${datasetId}/download`
2425
+ );
2426
+ }
2427
+
2428
+ export interface EndAnnotationSessionResponse {
2429
+ success: boolean;
2430
+ message: string;
2431
+ final_stats?: AnnotationStatsResponse;
2432
+ }
2433
+
2434
+ export async function endAnnotationSession(
2435
+ datasetId: string
2436
+ ): Promise<ApiResult<EndAnnotationSessionResponse>> {
2437
+ return request<EndAnnotationSessionResponse>(
2438
+ "DELETE",
2439
+ `/felix/datasets/annotate/${datasetId}/session`
2440
+ );
2441
+ }
2442
+
2443
+ // ─────────────────────────────────────────────────────────────────────────────
2444
+ // Leaderboard / Competitions
2445
+ // ─────────────────────────────────────────────────────────────────────────────
2446
+
2447
+ export interface LeaderboardEntry {
2448
+ id: string;
2449
+ dataset_id: string;
2450
+ evaluation_id: string;
2451
+ user_id: string;
2452
+ display_name: string;
2453
+ model_name: string;
2454
+ model_id?: string;
2455
+ f1_score: number;
2456
+ precision_score?: number;
2457
+ recall_score?: number;
2458
+ accuracy?: number;
2459
+ created_at: string;
2460
+ updated_at: string;
2461
+ rank?: number;
2462
+ }
2463
+
2464
+ export interface CompetitionInfo {
1144
2465
  dataset_id: string;
1145
2466
  dataset_name: string;
1146
- sample_count: number;
1147
- message?: string;
2467
+ dataset_type: string;
2468
+ description?: string;
2469
+ sample_count?: number;
2470
+ labels?: string[];
2471
+ sample_rows?: Record<string, unknown>[];
2472
+ winner?: LeaderboardEntry;
2473
+ total_entries: number;
1148
2474
  }
1149
2475
 
1150
- export async function pullDatasetFromHub(
1151
- options: HuggingFacePullRequest
1152
- ): Promise<ApiResult<HuggingFacePullResponse>> {
1153
- return request<HuggingFacePullResponse>(
2476
+ export interface CompetitionsResponse {
2477
+ success: boolean;
2478
+ competitions: CompetitionInfo[];
2479
+ }
2480
+
2481
+ export interface CompetitionSamplesResponse {
2482
+ dataset_id: string;
2483
+ sample_rows: Record<string, unknown>[];
2484
+ }
2485
+
2486
+ export interface LeaderboardEntriesResponse {
2487
+ success: boolean;
2488
+ dataset_id: string;
2489
+ dataset_name: string;
2490
+ entries: LeaderboardEntry[];
2491
+ total_entries: number;
2492
+ }
2493
+
2494
+ export interface LeaderboardSubmission {
2495
+ evaluation_id: string;
2496
+ display_name: string;
2497
+ }
2498
+
2499
+ export interface LeaderboardSubmitResponse {
2500
+ success: boolean;
2501
+ entry: LeaderboardEntry;
2502
+ rank: number;
2503
+ is_new_best: boolean;
2504
+ }
2505
+
2506
+ export async function listCompetitions(): Promise<ApiResult<CompetitionsResponse>> {
2507
+ return request<CompetitionsResponse>("GET", "/leaderboard/competitions");
2508
+ }
2509
+
2510
+ export async function getCompetitionSamples(
2511
+ datasetId: string
2512
+ ): Promise<ApiResult<CompetitionSamplesResponse>> {
2513
+ return request<CompetitionSamplesResponse>(
2514
+ "GET",
2515
+ `/leaderboard/competitions/${datasetId}/samples`
2516
+ );
2517
+ }
2518
+
2519
+ export async function getLeaderboardEntries(
2520
+ datasetId: string,
2521
+ limit?: number
2522
+ ): Promise<ApiResult<LeaderboardEntriesResponse>> {
2523
+ const params = new URLSearchParams();
2524
+ if (limit) params.set("limit", String(limit));
2525
+ const query = params.toString();
2526
+ const url = `/leaderboard/datasets/${datasetId}/entries${query ? `?${query}` : ""}`;
2527
+ return request<LeaderboardEntriesResponse>("GET", url);
2528
+ }
2529
+
2530
+ export async function submitToLeaderboard(
2531
+ datasetId: string,
2532
+ submission: LeaderboardSubmission
2533
+ ): Promise<ApiResult<LeaderboardSubmitResponse>> {
2534
+ return request<LeaderboardSubmitResponse>(
1154
2535
  "POST",
1155
- "/felix/datasets/pull-from-hub",
1156
- options
2536
+ `/leaderboard/datasets/${datasetId}/submit`,
2537
+ submission
2538
+ );
2539
+ }
2540
+
2541
+ // ─────────────────────────────────────────────────────────────────────────────
2542
+ // Notebook Execution
2543
+ // ─────────────────────────────────────────────────────────────────────────────
2544
+
2545
+ export interface CreateNotebookSessionRequest {
2546
+ gpu?: string;
2547
+ load_felix_helpers?: boolean;
2548
+ auto_terminate_seconds?: number;
2549
+ tags?: string[];
2550
+ }
2551
+
2552
+ export interface CreateNotebookSessionResponse {
2553
+ session_id: string;
2554
+ gpu: string;
2555
+ message: string;
2556
+ status: "creating" | "ready";
2557
+ }
2558
+
2559
+ export interface SessionStatusResponse {
2560
+ session_id: string;
2561
+ status: "creating" | "ready" | "failed";
2562
+ error?: string;
2563
+ }
2564
+
2565
+ export interface ExecuteOutput {
2566
+ type: string;
2567
+ name?: string;
2568
+ text?: string;
2569
+ data?: Record<string, string>;
2570
+ ename?: string;
2571
+ evalue?: string;
2572
+ traceback?: string[];
2573
+ }
2574
+
2575
+ export interface ExecuteCodeRequest {
2576
+ code: string;
2577
+ session_id?: string;
2578
+ cell_id?: string;
2579
+ include_variables?: boolean;
2580
+ gpu?: string;
2581
+ load_felix_helpers?: boolean;
2582
+ }
2583
+
2584
+ export interface ExecuteCodeResponse {
2585
+ success: boolean;
2586
+ outputs: ExecuteOutput[];
2587
+ variables: Record<string, unknown>;
2588
+ execution_time_ms: number;
2589
+ gpu_used?: string;
2590
+ cell_id?: string;
2591
+ session_id: string;
2592
+ error?: string;
2593
+ session_created?: boolean;
2594
+ }
2595
+
2596
+ export interface NotebookSessionInfo {
2597
+ session_id: string;
2598
+ gpu: string;
2599
+ created_at: string;
2600
+ last_activity: string;
2601
+ status: string;
2602
+ }
2603
+
2604
+ export interface ListSessionsResponse {
2605
+ sessions: NotebookSessionInfo[];
2606
+ }
2607
+
2608
+ export async function createNotebookSession(
2609
+ req?: CreateNotebookSessionRequest
2610
+ ): Promise<ApiResult<CreateNotebookSessionResponse>> {
2611
+ return request<CreateNotebookSessionResponse>(
2612
+ "POST",
2613
+ "/felix/notebook/sessions",
2614
+ req ?? {}
2615
+ );
2616
+ }
2617
+
2618
+ export async function getNotebookSessionStatus(
2619
+ sessionId: string
2620
+ ): Promise<ApiResult<SessionStatusResponse>> {
2621
+ return request<SessionStatusResponse>(
2622
+ "GET",
2623
+ `/felix/notebook/sessions/${sessionId}/status`
2624
+ );
2625
+ }
2626
+
2627
+ export async function listNotebookSessions(): Promise<ApiResult<ListSessionsResponse>> {
2628
+ return request<ListSessionsResponse>("GET", "/felix/notebook/sessions");
2629
+ }
2630
+
2631
+ export async function executeNotebookCode(
2632
+ req: ExecuteCodeRequest
2633
+ ): Promise<ApiResult<ExecuteCodeResponse>> {
2634
+ return request<ExecuteCodeResponse>("POST", "/felix/notebook/execute", req);
2635
+ }
2636
+
2637
+ export async function terminateNotebookSession(
2638
+ sessionId: string
2639
+ ): Promise<ApiResult<{ message: string }>> {
2640
+ return request<{ message: string }>(
2641
+ "DELETE",
2642
+ `/felix/notebook/sessions/${sessionId}`
1157
2643
  );
1158
2644
  }