@toloka-platform/sdk 0.1.0 → 0.2.0-preview.1

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 (280) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/toloka.js +138 -136
  3. package/dist/cli/toloka.js.jsc +0 -0
  4. package/dist/cli/toloka.js.jsc.sha256 +1 -1
  5. package/dist/cli/toloka.js.sha256 +1 -1
  6. package/docs/cli-v2.md +1 -1
  7. package/docs/cli.md +3 -1
  8. package/docs/getting-started.md +1 -1
  9. package/docs/limitations.md +2 -2
  10. package/docs/testing.md +1 -1
  11. package/examples/face-image-collection/README.md +1 -1
  12. package/openapi/gen/api.ts +1482 -777
  13. package/openapi/gen/models/createDatasetExportBody.ts +5 -3
  14. package/openapi/gen/models/createDatasetExportBodyFormat.ts +2 -0
  15. package/openapi/gen/models/createProjectTrainingBody.ts +6 -0
  16. package/openapi/gen/models/createTrainingRunBody.ts +6 -0
  17. package/openapi/gen/models/datasetExportReportTokens.ts +4 -1
  18. package/openapi/gen/models/datasetExportReportTokensEstimatorVersion.ts +2 -0
  19. package/openapi/gen/models/datasetExportReportTokensTotal.ts +2 -0
  20. package/openapi/gen/models/estimateTrainingCostBody.ts +5 -0
  21. package/openapi/gen/models/exportJob.ts +2 -0
  22. package/openapi/gen/models/exportJobError.ts +3 -0
  23. package/openapi/gen/models/exportJobErrorAnyOf.ts +7 -0
  24. package/openapi/gen/models/exportJobErrorAnyOfCode.ts +2 -0
  25. package/openapi/gen/models/exportJobStatus.ts +1 -1
  26. package/openapi/gen/models/getTrainingRunLogsParams.ts +5 -0
  27. package/openapi/gen/models/gistingTrainingConfiguration.ts +13 -0
  28. package/openapi/gen/models/gistingTrainingConfigurationInput.ts +13 -0
  29. package/openapi/gen/models/gistingTrainingConfigurationInputRegime.ts +2 -0
  30. package/openapi/gen/models/gistingTrainingConfigurationRegime.ts +2 -0
  31. package/openapi/gen/models/index.ts +230 -16
  32. package/openapi/gen/models/listProjectTrainings200.ts +7 -0
  33. package/openapi/gen/models/listProjectTrainingsParams.ts +5 -0
  34. package/openapi/gen/models/listTrainingRuns200.ts +7 -0
  35. package/openapi/gen/models/listTrainingRunsParams.ts +5 -0
  36. package/openapi/gen/models/modelVersion.ts +6 -1
  37. package/openapi/gen/models/modelVersionContent.ts +4 -0
  38. package/openapi/gen/models/modelVersionContentDownload.ts +11 -0
  39. package/openapi/gen/models/modelVersionContentDownloadContent.ts +4 -0
  40. package/openapi/gen/models/modelVersionContentDownloadContentOneOf.ts +10 -0
  41. package/openapi/gen/models/modelVersionContentDownloadContentOneOfManifestItem.ts +8 -0
  42. package/openapi/gen/models/modelVersionContentDownloadContentOneOfManifestItemMediaType.ts +2 -0
  43. package/openapi/gen/models/modelVersionContentDownloadContentOneOfNine.ts +8 -0
  44. package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineManifestItem.ts +8 -0
  45. package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineManifestItemMediaType.ts +2 -0
  46. package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineRuntimeBase.ts +2 -0
  47. package/openapi/gen/models/modelVersionContentDownloadContentOneOfParent.ts +4 -0
  48. package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOf.ts +6 -0
  49. package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOfBaseModelId.ts +2 -0
  50. package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOfThree.ts +5 -0
  51. package/openapi/gen/models/modelVersionContentDownloadContentOneOfRuntimeBase.ts +2 -0
  52. package/openapi/gen/models/modelVersionContentDownloadFilesItem.ts +9 -0
  53. package/openapi/gen/models/modelVersionContentDownloadFilesItemMediaType.ts +2 -0
  54. package/openapi/gen/models/modelVersionContentOneOf.ts +10 -0
  55. package/openapi/gen/models/modelVersionContentOneOfManifestItem.ts +8 -0
  56. package/openapi/gen/models/modelVersionContentOneOfManifestItemMediaType.ts +2 -0
  57. package/openapi/gen/models/modelVersionContentOneOfNine.ts +8 -0
  58. package/openapi/gen/models/modelVersionContentOneOfNineManifestItem.ts +8 -0
  59. package/openapi/gen/models/modelVersionContentOneOfNineManifestItemMediaType.ts +2 -0
  60. package/openapi/gen/models/modelVersionContentOneOfNineRuntimeBase.ts +2 -0
  61. package/openapi/gen/models/modelVersionContentOneOfParent.ts +4 -0
  62. package/openapi/gen/models/modelVersionContentOneOfParentOneOf.ts +6 -0
  63. package/openapi/gen/models/modelVersionContentOneOfParentOneOfBaseModelId.ts +2 -0
  64. package/openapi/gen/models/modelVersionContentOneOfParentOneOfThree.ts +5 -0
  65. package/openapi/gen/models/modelVersionContentOneOfRuntimeBase.ts +2 -0
  66. package/openapi/gen/models/modelVersionProducer.ts +5 -0
  67. package/openapi/gen/models/prepareTrainingCostEstimateInputsBody.ts +2 -0
  68. package/openapi/gen/models/replaceTrainingConfigurationBody.ts +5 -0
  69. package/openapi/gen/models/sftTrainingConfiguration.ts +13 -0
  70. package/openapi/gen/models/sftTrainingConfigurationInput.ts +13 -0
  71. package/openapi/gen/models/sftTrainingConfigurationInputRegime.ts +2 -0
  72. package/openapi/gen/models/sftTrainingConfigurationRegime.ts +2 -0
  73. package/openapi/gen/models/training.ts +16 -0
  74. package/openapi/gen/models/trainingArchivedAt.ts +2 -0
  75. package/openapi/gen/models/trainingConfiguration.ts +4 -0
  76. package/openapi/gen/models/trainingConfigurationInput.ts +4 -0
  77. package/openapi/gen/models/trainingCostEstimate.ts +4 -0
  78. package/openapi/gen/models/trainingCostEstimateInputSet.ts +12 -0
  79. package/openapi/gen/models/trainingCostEstimateInputSetExports.ts +6 -0
  80. package/openapi/gen/models/trainingCostEstimateInputSetExportsValidation.ts +2 -0
  81. package/openapi/gen/models/trainingCostEstimateInputSetId.ts +2 -0
  82. package/openapi/gen/models/trainingCostEstimateOneOf.ts +16 -0
  83. package/openapi/gen/models/trainingCostEstimateOneOfInputs.ts +7 -0
  84. package/openapi/gen/models/trainingCostEstimateOneOfInputsTraining.ts +9 -0
  85. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailure.ts +3 -0
  86. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailureAnyOf.ts +7 -0
  87. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailureAnyOfCode.ts +2 -0
  88. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReport.ts +3 -0
  89. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOf.ts +9 -0
  90. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfErrorsItem.ts +5 -0
  91. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokens.ts +10 -0
  92. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
  93. package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokensTotal.ts +2 -0
  94. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidation.ts +3 -0
  95. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOf.ts +9 -0
  96. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailure.ts +3 -0
  97. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailureAnyOf.ts +7 -0
  98. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
  99. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReport.ts +3 -0
  100. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOf.ts +9 -0
  101. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
  102. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
  103. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
  104. package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
  105. package/openapi/gen/models/trainingCostEstimateOneOfIssuesItem.ts +8 -0
  106. package/openapi/gen/models/trainingCostEstimateOneOfIssuesItemCode.ts +2 -0
  107. package/openapi/gen/models/trainingCostEstimateOneOfIssuesItemPurpose.ts +2 -0
  108. package/openapi/gen/models/trainingCostEstimateOneOfTwoseven.ts +23 -0
  109. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenBudget.ts +9 -0
  110. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputs.ts +7 -0
  111. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTraining.ts +9 -0
  112. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailure.ts +3 -0
  113. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailureAnyOf.ts +7 -0
  114. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailureAnyOfCode.ts +2 -0
  115. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReport.ts +3 -0
  116. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOf.ts +9 -0
  117. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfErrorsItem.ts +5 -0
  118. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokens.ts +10 -0
  119. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
  120. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokensTotal.ts +2 -0
  121. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidation.ts +3 -0
  122. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOf.ts +9 -0
  123. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailure.ts +3 -0
  124. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailureAnyOf.ts +7 -0
  125. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
  126. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReport.ts +3 -0
  127. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOf.ts +9 -0
  128. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
  129. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
  130. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
  131. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
  132. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItem.ts +8 -0
  133. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItemCode.ts +2 -0
  134. package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItemPurpose.ts +2 -0
  135. package/openapi/gen/models/trainingDatasetItemFilter.ts +8 -0
  136. package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItem.ts +6 -0
  137. package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItem.ts +4 -0
  138. package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
  139. package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
  140. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItem.ts +12 -0
  141. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemOperator.ts +2 -0
  142. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItem.ts +4 -0
  143. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
  144. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
  145. package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemValue.ts +2 -0
  146. package/openapi/gen/models/trainingDatasetItemFilterInput.ts +8 -0
  147. package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItem.ts +6 -0
  148. package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItem.ts +4 -0
  149. package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItemOneOf.ts +5 -0
  150. package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
  151. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItem.ts +12 -0
  152. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemOperator.ts +2 -0
  153. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItem.ts +4 -0
  154. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItemOneOf.ts +5 -0
  155. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
  156. package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemValue.ts +2 -0
  157. package/openapi/gen/models/trainingDatasetSelection.ts +6 -0
  158. package/openapi/gen/models/trainingDatasetSelectionInput.ts +6 -0
  159. package/openapi/gen/models/trainingId.ts +2 -0
  160. package/openapi/gen/models/trainingModelId.ts +3 -0
  161. package/openapi/gen/models/trainingModelSource.ts +4 -0
  162. package/openapi/gen/models/trainingModelSourceOneOf.ts +6 -0
  163. package/openapi/gen/models/trainingModelSourceOneOfBaseModelId.ts +2 -0
  164. package/openapi/gen/models/trainingModelSourceOneOfThree.ts +5 -0
  165. package/openapi/gen/models/trainingRun.ts +39 -0
  166. package/openapi/gen/models/trainingRunBillingStatus.ts +2 -0
  167. package/openapi/gen/models/trainingRunBlockedReason.ts +2 -0
  168. package/openapi/gen/models/trainingRunChargedAmount.ts +2 -0
  169. package/openapi/gen/models/trainingRunError.ts +3 -0
  170. package/openapi/gen/models/trainingRunErrorAnyOf.ts +7 -0
  171. package/openapi/gen/models/trainingRunErrorAnyOfCode.ts +2 -0
  172. package/openapi/gen/models/trainingRunId.ts +2 -0
  173. package/openapi/gen/models/trainingRunInputs.ts +3 -0
  174. package/openapi/gen/models/trainingRunInputsAnyOf.ts +7 -0
  175. package/openapi/gen/models/trainingRunInputsAnyOfTraining.ts +15 -0
  176. package/openapi/gen/models/trainingRunInputsAnyOfTrainingContract.ts +2 -0
  177. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilter.ts +9 -0
  178. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItem.ts +6 -0
  179. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItem.ts +4 -0
  180. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
  181. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
  182. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItem.ts +12 -0
  183. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemOperator.ts +2 -0
  184. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItem.ts +4 -0
  185. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
  186. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
  187. package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemValue.ts +2 -0
  188. package/openapi/gen/models/trainingRunInputsAnyOfTrainingReport.ts +9 -0
  189. package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportErrorsItem.ts +5 -0
  190. package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokens.ts +10 -0
  191. package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokensEstimatorVersion.ts +2 -0
  192. package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokensTotal.ts +2 -0
  193. package/openapi/gen/models/trainingRunInputsAnyOfValidation.ts +3 -0
  194. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOf.ts +15 -0
  195. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfContract.ts +2 -0
  196. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilter.ts +9 -0
  197. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItem.ts +6 -0
  198. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItem.ts +4 -0
  199. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
  200. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
  201. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItem.ts +12 -0
  202. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemOperator.ts +2 -0
  203. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItem.ts +4 -0
  204. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
  205. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
  206. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemValue.ts +2 -0
  207. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReport.ts +9 -0
  208. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportErrorsItem.ts +5 -0
  209. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokens.ts +10 -0
  210. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion.ts +2 -0
  211. package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokensTotal.ts +2 -0
  212. package/openapi/gen/models/trainingRunLogs.ts +9 -0
  213. package/openapi/gen/models/trainingRunLogsEntriesItem.ts +7 -0
  214. package/openapi/gen/models/trainingRunLogsEntriesItemLevel.ts +2 -0
  215. package/openapi/gen/models/trainingRunLogsNextCursor.ts +2 -0
  216. package/openapi/gen/models/trainingRunMessage.ts +2 -0
  217. package/openapi/gen/models/trainingRunOutputModelVersionRevision.ts +2 -0
  218. package/openapi/gen/models/trainingRunProgress.ts +3 -0
  219. package/openapi/gen/models/trainingRunProgressAnyOf.ts +10 -0
  220. package/openapi/gen/models/trainingRunProgressAnyOfMessage.ts +2 -0
  221. package/openapi/gen/models/trainingRunProgressAnyOfStep.ts +2 -0
  222. package/openapi/gen/models/trainingRunProgressAnyOfTotal.ts +2 -0
  223. package/openapi/gen/models/trainingRunQuote.ts +17 -0
  224. package/openapi/gen/models/trainingRunQuoteBudget.ts +9 -0
  225. package/openapi/gen/models/trainingRunQuoteInputs.ts +7 -0
  226. package/openapi/gen/models/trainingRunQuoteInputsTraining.ts +9 -0
  227. package/openapi/gen/models/trainingRunQuoteInputsTrainingFailure.ts +3 -0
  228. package/openapi/gen/models/trainingRunQuoteInputsTrainingFailureAnyOf.ts +7 -0
  229. package/openapi/gen/models/trainingRunQuoteInputsTrainingFailureAnyOfCode.ts +2 -0
  230. package/openapi/gen/models/trainingRunQuoteInputsTrainingReport.ts +3 -0
  231. package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOf.ts +9 -0
  232. package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfErrorsItem.ts +5 -0
  233. package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokens.ts +10 -0
  234. package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
  235. package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokensTotal.ts +2 -0
  236. package/openapi/gen/models/trainingRunQuoteInputsValidation.ts +3 -0
  237. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOf.ts +9 -0
  238. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailure.ts +3 -0
  239. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailureAnyOf.ts +7 -0
  240. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
  241. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReport.ts +3 -0
  242. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOf.ts +9 -0
  243. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
  244. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
  245. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
  246. package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
  247. package/openapi/gen/models/trainingRunStatus.ts +2 -0
  248. package/openapi/gen/models/updateTrainingMetadataBody.ts +5 -0
  249. package/package.json +1 -1
  250. package/skills/catalog.json +19 -7
  251. package/skills/toloka-build/SKILL.md +3 -3
  252. package/skills/toloka-build/references/workflow-and-cli.md +19 -2
  253. package/skills/toloka-report-issue/references/report-template.md +1 -1
  254. package/src/cli/auth.ts +1 -1
  255. package/src/cli/bin.ts +1 -1
  256. package/src/cli/cost.ts +1 -1
  257. package/src/cli/models.ts +107 -2
  258. package/src/cli/program.ts +243 -0
  259. package/src/cli/project-context.ts +9 -10
  260. package/src/cli/project.ts +2 -1
  261. package/src/cli/secrets.ts +4 -4
  262. package/src/cli/trainings.ts +627 -0
  263. package/src/client.ts +164 -30
  264. package/src/index.ts +2 -0
  265. package/openapi/gen/models/createDatasetExportBodyOneOf.ts +0 -6
  266. package/openapi/gen/models/createDatasetExportBodyOneOfFormat.ts +0 -2
  267. package/openapi/gen/models/createDatasetExportBodyOneOfThree.ts +0 -10
  268. package/openapi/gen/models/createDatasetExportBodyOneOfThreeContract.ts +0 -2
  269. package/openapi/gen/models/createDatasetExportBodyOneOfThreeFormat.ts +0 -2
  270. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilter.ts +0 -9
  271. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItem.ts +0 -6
  272. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItem.ts +0 -4
  273. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +0 -5
  274. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +0 -5
  275. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItem.ts +0 -12
  276. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemOperator.ts +0 -2
  277. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItem.ts +0 -4
  278. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOf.ts +0 -5
  279. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +0 -5
  280. package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemValue.ts +0 -2
@@ -0,0 +1,5 @@
1
+
2
+ export type TrainingRunInputsAnyOfValidationAnyOfReportErrorsItem = {
3
+ itemIndex: number;
4
+ reason: string;
5
+ };
@@ -0,0 +1,10 @@
1
+ import type { TrainingRunInputsAnyOfValidationAnyOfReportTokensTotal } from './trainingRunInputsAnyOfValidationAnyOfReportTokensTotal';
2
+ import type { TrainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion } from './trainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion';
3
+
4
+ export type TrainingRunInputsAnyOfValidationAnyOfReportTokens = {
5
+ p50: number;
6
+ p95: number;
7
+ max: number;
8
+ total?: TrainingRunInputsAnyOfValidationAnyOfReportTokensTotal;
9
+ estimatorVersion?: TrainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion;
10
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion = 'utf16-code-units-div-4-v1' | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunInputsAnyOfValidationAnyOfReportTokensTotal = number | null;
@@ -0,0 +1,9 @@
1
+ import type { TrainingRunLogsEntriesItem } from './trainingRunLogsEntriesItem';
2
+ import type { TrainingRunLogsNextCursor } from './trainingRunLogsNextCursor';
3
+
4
+ export interface TrainingRunLogs {
5
+ entries: TrainingRunLogsEntriesItem[];
6
+ nextCursor: TrainingRunLogsNextCursor;
7
+ complete: boolean;
8
+ truncated: boolean;
9
+ }
@@ -0,0 +1,7 @@
1
+ import type { TrainingRunLogsEntriesItemLevel } from './trainingRunLogsEntriesItemLevel';
2
+
3
+ export type TrainingRunLogsEntriesItem = {
4
+ timestamp: string;
5
+ level: TrainingRunLogsEntriesItemLevel;
6
+ message: string;
7
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunLogsEntriesItemLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunLogsNextCursor = string | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunMessage = string | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunOutputModelVersionRevision = number | null;
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunProgressAnyOf } from './trainingRunProgressAnyOf';
2
+
3
+ export type TrainingRunProgress = TrainingRunProgressAnyOf | null;
@@ -0,0 +1,10 @@
1
+ import type { TrainingRunProgressAnyOfStep } from './trainingRunProgressAnyOfStep';
2
+ import type { TrainingRunProgressAnyOfTotal } from './trainingRunProgressAnyOfTotal';
3
+ import type { TrainingRunProgressAnyOfMessage } from './trainingRunProgressAnyOfMessage';
4
+
5
+ export type TrainingRunProgressAnyOf = {
6
+ phase: string;
7
+ step: TrainingRunProgressAnyOfStep;
8
+ total: TrainingRunProgressAnyOfTotal;
9
+ message: TrainingRunProgressAnyOfMessage;
10
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunProgressAnyOfMessage = string | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunProgressAnyOfStep = number | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunProgressAnyOfTotal = number | null;
@@ -0,0 +1,17 @@
1
+ import type { TrainingCostEstimateInputSetId } from './trainingCostEstimateInputSetId';
2
+ import type { TrainingRunQuoteInputs } from './trainingRunQuoteInputs';
3
+ import type { TrainingRunQuoteBudget } from './trainingRunQuoteBudget';
4
+
5
+ export type TrainingRunQuote = {
6
+ inputSetId: TrainingCostEstimateInputSetId;
7
+ cutoff: string;
8
+ inputs: TrainingRunQuoteInputs;
9
+ capabilityVersion: string;
10
+ pricingVersion: string;
11
+ calculatedAt: string;
12
+ budget: TrainingRunQuoteBudget;
13
+ basePricePerGpuHour: string;
14
+ marginMultiplier: string;
15
+ maximumCharge: string;
16
+ currency: 'USD';
17
+ };
@@ -0,0 +1,9 @@
1
+
2
+ export type TrainingRunQuoteBudget = {
3
+ methodWorkUnits: number;
4
+ estimatedGpuSeconds: number;
5
+ estimatedWallSeconds: number;
6
+ maximumWallSeconds: number;
7
+ maximumGpuSeconds: number;
8
+ gpuCount: number;
9
+ };
@@ -0,0 +1,7 @@
1
+ import type { TrainingRunQuoteInputsTraining } from './trainingRunQuoteInputsTraining';
2
+ import type { TrainingRunQuoteInputsValidation } from './trainingRunQuoteInputsValidation';
3
+
4
+ export type TrainingRunQuoteInputs = {
5
+ training: TrainingRunQuoteInputsTraining;
6
+ validation: TrainingRunQuoteInputsValidation;
7
+ };
@@ -0,0 +1,9 @@
1
+ import type { TrainingRunQuoteInputsTrainingReport } from './trainingRunQuoteInputsTrainingReport';
2
+ import type { TrainingRunQuoteInputsTrainingFailure } from './trainingRunQuoteInputsTrainingFailure';
3
+
4
+ export type TrainingRunQuoteInputsTraining = {
5
+ datasetId: string;
6
+ datasetExportId: string;
7
+ report: TrainingRunQuoteInputsTrainingReport;
8
+ failure: TrainingRunQuoteInputsTrainingFailure;
9
+ };
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunQuoteInputsTrainingFailureAnyOf } from './trainingRunQuoteInputsTrainingFailureAnyOf';
2
+
3
+ export type TrainingRunQuoteInputsTrainingFailure = TrainingRunQuoteInputsTrainingFailureAnyOf | null;
@@ -0,0 +1,7 @@
1
+ import type { TrainingRunQuoteInputsTrainingFailureAnyOfCode } from './trainingRunQuoteInputsTrainingFailureAnyOfCode';
2
+
3
+ export type TrainingRunQuoteInputsTrainingFailureAnyOf = {
4
+ timestamp: string;
5
+ code: TrainingRunQuoteInputsTrainingFailureAnyOfCode;
6
+ message: string;
7
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsTrainingFailureAnyOfCode = 'empty_selection' | 'size_limit_exceeded' | 'assembly_failed';
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunQuoteInputsTrainingReportAnyOf } from './trainingRunQuoteInputsTrainingReportAnyOf';
2
+
3
+ export type TrainingRunQuoteInputsTrainingReport = TrainingRunQuoteInputsTrainingReportAnyOf | null;
@@ -0,0 +1,9 @@
1
+ import type { TrainingRunQuoteInputsTrainingReportAnyOfErrorsItem } from './trainingRunQuoteInputsTrainingReportAnyOfErrorsItem';
2
+ import type { TrainingRunQuoteInputsTrainingReportAnyOfTokens } from './trainingRunQuoteInputsTrainingReportAnyOfTokens';
3
+
4
+ export type TrainingRunQuoteInputsTrainingReportAnyOf = {
5
+ validCount: number;
6
+ invalidCount: number;
7
+ errors: TrainingRunQuoteInputsTrainingReportAnyOfErrorsItem[];
8
+ tokens: TrainingRunQuoteInputsTrainingReportAnyOfTokens;
9
+ };
@@ -0,0 +1,5 @@
1
+
2
+ export type TrainingRunQuoteInputsTrainingReportAnyOfErrorsItem = {
3
+ itemIndex: number;
4
+ reason: string;
5
+ };
@@ -0,0 +1,10 @@
1
+ import type { TrainingRunQuoteInputsTrainingReportAnyOfTokensTotal } from './trainingRunQuoteInputsTrainingReportAnyOfTokensTotal';
2
+ import type { TrainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion } from './trainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion';
3
+
4
+ export type TrainingRunQuoteInputsTrainingReportAnyOfTokens = {
5
+ p50: number;
6
+ p95: number;
7
+ max: number;
8
+ total?: TrainingRunQuoteInputsTrainingReportAnyOfTokensTotal;
9
+ estimatorVersion?: TrainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion;
10
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion = 'utf16-code-units-div-4-v1' | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsTrainingReportAnyOfTokensTotal = number | null;
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOf } from './trainingRunQuoteInputsValidationAnyOf';
2
+
3
+ export type TrainingRunQuoteInputsValidation = TrainingRunQuoteInputsValidationAnyOf | null;
@@ -0,0 +1,9 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfReport } from './trainingRunQuoteInputsValidationAnyOfReport';
2
+ import type { TrainingRunQuoteInputsValidationAnyOfFailure } from './trainingRunQuoteInputsValidationAnyOfFailure';
3
+
4
+ export type TrainingRunQuoteInputsValidationAnyOf = {
5
+ datasetId: string;
6
+ datasetExportId: string;
7
+ report: TrainingRunQuoteInputsValidationAnyOfReport;
8
+ failure: TrainingRunQuoteInputsValidationAnyOfFailure;
9
+ };
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfFailureAnyOf } from './trainingRunQuoteInputsValidationAnyOfFailureAnyOf';
2
+
3
+ export type TrainingRunQuoteInputsValidationAnyOfFailure = TrainingRunQuoteInputsValidationAnyOfFailureAnyOf | null;
@@ -0,0 +1,7 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfFailureAnyOfCode } from './trainingRunQuoteInputsValidationAnyOfFailureAnyOfCode';
2
+
3
+ export type TrainingRunQuoteInputsValidationAnyOfFailureAnyOf = {
4
+ timestamp: string;
5
+ code: TrainingRunQuoteInputsValidationAnyOfFailureAnyOfCode;
6
+ message: string;
7
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsValidationAnyOfFailureAnyOfCode = 'empty_selection' | 'size_limit_exceeded' | 'assembly_failed';
@@ -0,0 +1,3 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfReportAnyOf } from './trainingRunQuoteInputsValidationAnyOfReportAnyOf';
2
+
3
+ export type TrainingRunQuoteInputsValidationAnyOfReport = TrainingRunQuoteInputsValidationAnyOfReportAnyOf | null;
@@ -0,0 +1,9 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem } from './trainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem';
2
+ import type { TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokens } from './trainingRunQuoteInputsValidationAnyOfReportAnyOfTokens';
3
+
4
+ export type TrainingRunQuoteInputsValidationAnyOfReportAnyOf = {
5
+ validCount: number;
6
+ invalidCount: number;
7
+ errors: TrainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem[];
8
+ tokens: TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokens;
9
+ };
@@ -0,0 +1,5 @@
1
+
2
+ export type TrainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem = {
3
+ itemIndex: number;
4
+ reason: string;
5
+ };
@@ -0,0 +1,10 @@
1
+ import type { TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal } from './trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal';
2
+ import type { TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion } from './trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion';
3
+
4
+ export type TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokens = {
5
+ p50: number;
6
+ p95: number;
7
+ max: number;
8
+ total?: TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal;
9
+ estimatorVersion?: TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion;
10
+ };
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion = 'utf16-code-units-div-4-v1' | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal = number | null;
@@ -0,0 +1,2 @@
1
+
2
+ export type TrainingRunStatus = 'queued' | 'running' | 'stopping' | 'blocked' | 'completed' | 'failed' | 'canceled';
@@ -0,0 +1,5 @@
1
+
2
+ export type UpdateTrainingMetadataBody = {
3
+ name?: string;
4
+ archived?: boolean;
5
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toloka-platform/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.0-preview.1",
4
4
  "private": false,
5
5
  "description": "Beta. Build, inspect, and operate Toloka pipeline projects as TypeScript source. The public API may change.",
6
6
  "license": "Apache-2.0",
@@ -13,18 +13,30 @@
13
13
  "testing",
14
14
  "checks"
15
15
  ],
16
- "version": "0.1.0",
17
- "digest": "bcdb60e89bc4b8e345c1793c7a7d5275e8b196e171bd09adba242ed89f117a50",
18
- "files": ["SKILL.md", "references/node-semantics.md", "references/workflow-and-cli.md"]
16
+ "version": "0.2.0-preview.1",
17
+ "digest": "5e5bdd01d1f87d2de65af6ac4d7c3f48f1e79e62355a5e3774a9e205c21fbf2c",
18
+ "files": [
19
+ "SKILL.md",
20
+ "references/node-semantics.md",
21
+ "references/workflow-and-cli.md"
22
+ ]
19
23
  },
20
24
  {
21
25
  "id": "toloka-report-issue",
22
26
  "name": "Report a Toloka problem",
23
27
  "description": "Report a problem with the Toloka platform, CLI, or SDK as a redacted Markdown issue report sent through the toloka CLI only after explicit approval. Use when the user hits unexpected behavior, an error, or a bug and wants Toloka engineers to investigate.",
24
- "tags": ["support", "issue", "bug", "report"],
25
- "version": "0.1.0",
26
- "digest": "969aedef68e56243395e0a9115d90041c7c1e27f759762b07e62a7d521a8a251",
27
- "files": ["SKILL.md", "references/report-template.md"]
28
+ "tags": [
29
+ "support",
30
+ "issue",
31
+ "bug",
32
+ "report"
33
+ ],
34
+ "version": "0.2.0-preview.1",
35
+ "digest": "c4743435270c6fee22b230eab8ac1ef642262a94e960ada91f9bba5894eb03b5",
36
+ "files": [
37
+ "SKILL.md",
38
+ "references/report-template.md"
39
+ ]
28
40
  }
29
41
  ]
30
42
  }
@@ -11,7 +11,7 @@ Use this skill when the user wants to get started or to create, inspect, test, o
11
11
 
12
12
  ## Guide a first-time user
13
13
 
14
- When the user asks to get started or points to `https://platform.toloka.ai/onboarding.md`, read that guide before acting. The guide owns the session order and its user checkpoints. This skill owns authoring semantics, local test requirements, recovery, and evidence reporting.
14
+ When the user asks to get started or points to `https://platform.toloka.ai/agents/data-labeling.md`, read that guide before acting. The guide owns the session order and its user checkpoints. This skill owns authoring semantics, local test requirements, recovery, and evidence reporting.
15
15
 
16
16
  Do not replace the guide's quick demo with another example, and do not run the demo when the user chooses their own task. Never cross its API-key, project-creation, plan, or run-cost checkpoint without the user's required action or approval.
17
17
 
@@ -75,7 +75,7 @@ These are server rules that `definePipeline` does not check. Each one costs an a
75
75
 
76
76
  `toloka check` is the required local gate. It runs the project TypeScript compiler, typechecks every authored Task UI against declarations bundled with this SDK version, runs Vitest, and requires passing typed `test.code`, `test.ui`, and `test.pipeline` evidence for every checkable node and pipeline. Use `toloka check <pipeline> --node <name-or-id>` while iterating, then run the unfiltered command before plan or run. Status `missing` means required test evidence does not exist; `failed` means a check ran and failed; `partial` means hardware-backed behavior remains unverified; `infrastructure_error` means the checker could not run. All four block apply.
77
77
 
78
- `toloka validate` posts each bound graph to the platform. Treat source/spec errors as blocking and warnings as informational. `not_ran_node_check` concerns a separate Remote Node Check and does not invalidate a passing Local Check Gate. A pipeline not yet on the platform is skipped until `toloka apply` creates it. When a reviewed plan adds a dataset field already bound by an existing live pipeline, pre-apply validation can report that exact field as missing; apply only the reviewed additive plan, then require post-apply validation to clear source/spec errors. Never rewrite valid source for a missing Remote Node Check.
78
+ `toloka validate` posts each bound graph to the platform. Treat source/spec errors as blocking and warnings as informational. A `not_ran_node_check` concerns a separate Remote Node Check and does not replace a passing Local Check Gate, but its remote-validation severity still matters: lint checks report it as a blocking error while other checks can report it as a warning. A pipeline not yet on the platform is skipped until `toloka apply` creates it. When a reviewed plan adds a dataset field already bound by an existing live pipeline, pre-apply validation can report that exact field as missing; apply only the reviewed additive plan, then require post-apply validation to clear source/spec errors. Never rewrite valid source for a missing Remote Node Check.
79
79
 
80
80
  Before choosing Task UI components, call `ui.componentDocumentation()` from a local `@toloka-platform/sdk/testing` scenario. A component's usable contract is the returned `propsType` plus its returned `valueType` and `example`; shared `Field` props such as `path`, `label`, `hint`, and `validation` can be confirmed from any current `Field.*` example, but do not invent any other prop. For structured or array-valued Fields, derive the dataset field schema from `valueType`, then feed the documented example value through `setValue`, `getValue`, and `submit` in the UI scenario so upstream contract drift fails locally. Never translate undocumented property names or replace missing values with defaults. Every identifier in `ui.code` must be a returned component or documented `actions` API, and JSX must have one root element. Register each required UI scenario with `test.ui(pipeline, node, name, callback)` and submit through its bound `render` helper. Run `toloka check <pipeline> --node <name-or-id>` after every Task UI edit; require passing UI types, empty browser validation errors, valid postprocessed entity output, and visual inspection where relevant. Never weaken authored validation merely to make a test pass.
81
81
 
@@ -104,7 +104,7 @@ A globally installed CLI auto-updates by default; turn that off with `toloka con
104
104
 
105
105
  ## Run a deployed pipeline
106
106
 
107
- Before starting a run, require a passing `toloka check` and no blocking source/spec error from `toloka validate`. Do not block on `not_ran_node_check`, which concerns separate Remote Node Checks. Run `toloka pipeline cost <name>` when pricing evidence is needed; if it skips a billed node, report the authored rate and a labeled labor floor instead of presenting `$0.00` as the price.
107
+ Before starting a run, require a passing `toloka check` and no blocking error from `toloka validate`. A warning-severity `not_ran_node_check` concerns a separate Remote Node Check and does not block the Local Check Gate; an error-severity instance remains a blocking remote-validation result. Run `toloka pipeline cost <name>` when pricing evidence is needed; if it skips a billed node, report the authored rate and a labeled labor floor instead of presenting `$0.00` as the price.
108
108
 
109
109
  Start a run with `toloka pipeline run <name> --wait --timeout <ms>`, then read its exit code: `0` succeeded, `1` reached a failed terminal state, `2` still running when the window closed. Without `--wait`, exit `0` only means the run was accepted. Nothing reports back later, so never describe a started run as a finished one. Name the live pipeline; there is no implicit only-pipeline.
110
110
 
@@ -26,7 +26,7 @@ Treat the three layers differently:
26
26
 
27
27
  ## Initialize the source root
28
28
 
29
- For a first-time guided session, read `https://platform.toloka.ai/onboarding.md` first. Keep its stage order and checkpoints; use this reference for the commands and source-first invariants inside those stages.
29
+ For a first-time guided session, read `https://platform.toloka.ai/agents/data-labeling.md` first. Keep its stage order and checkpoints; use this reference for the commands and source-first invariants inside those stages.
30
30
 
31
31
  Install the SDK before invoking project commands:
32
32
 
@@ -126,6 +126,17 @@ toloka model get <name-or-id> [--json]
126
126
  toloka model versions <name-or-id> [--json]
127
127
  toloka model create <name> --base <base-model-id> [--description <text>] [--json]
128
128
  toloka model archive <name-or-id> [--json]
129
+ toloka training list [--json]
130
+ toloka training get <name-or-id> [--json]
131
+ toloka training create <name> (--base-model <id> | --model-version <id>) --dataset <id> [--json]
132
+ toloka training update <name-or-id> [configuration flags] [--json]
133
+ toloka training cost <name-or-id> [--idempotency-key <key>] [--json]
134
+ toloka training run <name-or-id> --estimate-file <path> --version-name <name> [--idempotency-key <key>] [--json]
135
+ toloka training runs <name-or-id> [--json]
136
+ toloka training status <training-run-id> [--json]
137
+ toloka training resume <training-run-id> [--json]
138
+ toloka training cancel <training-run-id> [--json]
139
+ toloka training logs <training-run-id> [--follow]
129
140
  toloka skill list [--json]
130
141
  toloka skill search <query> [--json]
131
142
  toloka skill install <skill-id> [--force]
@@ -142,6 +153,12 @@ Select the platform project with `toloka project add` or `toloka project create`
142
153
 
143
154
  The global Base Model Catalog is read-only and uses `toloka base-model`. `base-model list` prints aligned ID, name, provider, and upstream-model columns by default. `toloka model` manages project-owned lineages; creation requires one catalog `baseModelId` and creates metadata without a Model Version. Every Base Model and Model command accepts `--json` for machine-readable output. Model Version upload, validation, and download commands are deferred until the separate upload-processing contract is implemented.
144
155
 
156
+ ## Train a model
157
+
158
+ `toloka training create` requires one source (`--base-model` or `--model-version`) and a training Dataset. The output Model is created on the first Training Run from the Training name, or bound from an existing Model Version source.
159
+
160
+ Use `training cost` to validate inputs and produce a ready estimate JSON file before `training run`. The run command requires that file and an explicit maximum cost. Use `training status`, `training logs`, `training resume`, and `training cancel` with the returned Training Run ID.
161
+
145
162
  ## Adopt an existing live project
146
163
 
147
164
  1. Install `@toloka-platform/sdk` in the intended source root.
@@ -181,7 +198,7 @@ toloka validate
181
198
 
182
199
  With `--watch --json`, each completed rerun writes one JSON line. Do not start another watcher while one is active.
183
200
 
184
- `toloka validate` posts each authored graph to the platform. Distinguish source/spec errors, which require source changes; `not_ran_node_check`, which describes a separate Remote Node Check; and warnings. It does not write the graph. A pipeline that is not on the platform yet is skipped until `toloka apply` creates it. When plan adds a dataset field used by an already-live pipeline, pre-apply validation can report that exact field as `misconfigured_node_form_component` because the column is not live yet. Treat it as expected only when the reviewed plan adds the same field, then require post-apply validation to clear the source/spec error.
201
+ `toloka validate` posts each authored graph to the platform. Distinguish source/spec errors, which require source changes; Remote Node Check state; and warnings. A lint `not_ran_node_check` is a blocking remote-validation error, while other check types can report the same code as a warning; neither replaces the Local Check Gate. Validation does not write the graph. A pipeline that is not on the platform yet is skipped until `toloka apply` creates it. When plan adds a dataset field used by an already-live pipeline, pre-apply validation can report that exact field as `misconfigured_node_form_component` because the column is not live yet. Treat it as expected only when the reviewed plan adds the same field, then require post-apply validation to clear the source/spec error.
185
202
 
186
203
  The authored API still supplies extra local safety:
187
204
 
@@ -26,7 +26,7 @@ The CLI exits 1 with `Potato API request failed with status 500`. The same comma
26
26
 
27
27
  ## Environment
28
28
 
29
- - toloka CLI 0.1.0 (`toloka --version`), Bun 1.4.0, macOS 15
29
+ - toloka CLI 0.2.0-preview.1 (`toloka --version`), Bun 1.4.0, macOS 15
30
30
  - Platform: https://platform.toloka.ai
31
31
 
32
32
  ## Redactions
package/src/cli/auth.ts CHANGED
@@ -81,7 +81,7 @@ export async function login(options: LoginOptions = {}): Promise<LoginResult> {
81
81
  PRODUCTION_BASE_URL,
82
82
  );
83
83
 
84
- let apiKey = options.apiKey;
84
+ let apiKey = options.apiKey ?? environment.POTATO_API_KEY;
85
85
  if (apiKey === undefined) {
86
86
  assert(
87
87
  options.prompt,
package/src/cli/bin.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env bun
2
- import { runTolokaCli } from './program';
2
+ import { runTolokaCli } from "./program";
3
3
 
4
4
  process.exitCode = await runTolokaCli(process.argv.slice(2));
package/src/cli/cost.ts CHANGED
@@ -88,7 +88,7 @@ const collectTotalRows = (total: PipelineCostEstimate["total"]): TableRow[] => {
88
88
  ["Maximum run cost", "", total.worstCase],
89
89
  ];
90
90
  if (total.bestCase != null) {
91
- totals.push(["Best case", total.bestCase, ""]);
91
+ totals.push(["Best case", total.bestCase, "N/A"]);
92
92
  }
93
93
  if (total.perItemExpected != null) {
94
94
  totals.push(["Per item", total.perItemExpected, total.perItemWorstCase ?? ""]);
package/src/cli/models.ts CHANGED
@@ -1,3 +1,10 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { constants } from "node:fs";
3
+ import { mkdir, open, realpath, rename, rm } from "node:fs/promises";
4
+ import { isAbsolute, relative, resolve, sep } from "node:path";
5
+ import { Readable, Transform } from "node:stream";
6
+ import { pipeline } from "node:stream/promises";
7
+
1
8
  import { assert } from "es-toolkit";
2
9
 
3
10
  import type { BaseModel, BaseModelId, Model, ModelVersion, PotatoClient } from "../client";
@@ -73,6 +80,29 @@ const resolveModel = async (
73
80
  return matches[0]!;
74
81
  };
75
82
 
83
+ const resolveModelVersion = async (
84
+ client: ModelApi,
85
+ projectId: string | undefined,
86
+ nameOrId: string,
87
+ ): Promise<ModelVersion> => {
88
+ if (nameOrId.startsWith("mdv.")) return client.models.getVersion({ modelVersionId: nameOrId });
89
+ const separator = nameOrId.lastIndexOf("@");
90
+ assert(separator > 0, `Model Version ${nameOrId} was not found. Use mdv.<id> or Model@name.`);
91
+ assert(projectId, "Select a project to resolve Model Version names.");
92
+ const model = await resolveModel(client, projectId, nameOrId.slice(0, separator));
93
+ const versionName = nameOrId.slice(separator + 1);
94
+ const matches: ModelVersion[] = [];
95
+ for await (const version of client.models.listAllVersions({
96
+ projectId,
97
+ modelId: model.id,
98
+ limit: 100,
99
+ })) {
100
+ if (version.name === versionName) matches.push(version);
101
+ }
102
+ assert(matches.length === 1, `Model Version ${nameOrId} was not found or is ambiguous.`);
103
+ return matches[0]!;
104
+ };
105
+
76
106
  export const listBaseModels = async (
77
107
  client: ModelApi,
78
108
  input: { json: boolean },
@@ -155,8 +185,13 @@ export const listModelVersions = async (
155
185
  versions.length === 0
156
186
  ? "No Model Versions found."
157
187
  : formatTable([
158
- ["VERSION", "ID", "CREATED AT"],
159
- ...versions.map((version) => [version.version, version.id, version.createdAt]),
188
+ ["REVISION", "NAME", "ID", "CREATED AT"],
189
+ ...versions.map((version) => [
190
+ String(version.revision),
191
+ version.name,
192
+ version.id,
193
+ version.createdAt,
194
+ ]),
160
195
  ]),
161
196
  );
162
197
  };
@@ -186,3 +221,73 @@ export const archiveModel = async (
186
221
  const archived = await client.models.archive({ projectId: input.projectId, modelId: model.id });
187
222
  writeOutput(io, input.json, archived, `Archived Model ${archived.id}.`);
188
223
  };
224
+
225
+ export const downloadModelVersion = async (
226
+ client: ModelApi,
227
+ input: { projectId?: string; modelVersionId: string; out: string },
228
+ io: ModelIo,
229
+ ): Promise<void> => {
230
+ const version = await resolveModelVersion(client, input.projectId, input.modelVersionId);
231
+ const descriptor = await client.models.getVersionContent({
232
+ modelVersionId: version.id,
233
+ });
234
+ const root = resolve(input.out);
235
+ await mkdir(root, { recursive: true });
236
+ const realRoot = await realpath(root);
237
+
238
+ for (const file of descriptor.files) {
239
+ const target = resolve(root, file.path);
240
+ const relativeTarget = relative(root, target);
241
+ assert(
242
+ relativeTarget !== "" &&
243
+ relativeTarget !== ".." &&
244
+ !relativeTarget.startsWith(`..${sep}`) &&
245
+ !isAbsolute(relativeTarget),
246
+ `Invalid Model Version file path: ${file.path}`,
247
+ );
248
+ let parent = root;
249
+ for (const segment of file.path.split("/").slice(0, -1)) {
250
+ parent = resolve(parent, segment);
251
+ await mkdir(parent, { recursive: true });
252
+ const realParent = await realpath(parent);
253
+ assert(
254
+ realParent === realRoot || realParent.startsWith(`${realRoot}${sep}`),
255
+ `Invalid Model Version file path: ${file.path}`,
256
+ );
257
+ }
258
+ const response = await fetch(file.url, { redirect: "error" });
259
+ assert(response.ok && response.body, `Failed to download Model Version file ${file.path}.`);
260
+ const hash = createHash("sha256");
261
+ let byteSize = 0;
262
+ const verify = new Transform({
263
+ transform(chunk: Buffer, _encoding, callback) {
264
+ byteSize += chunk.byteLength;
265
+ hash.update(chunk);
266
+ callback(null, chunk);
267
+ },
268
+ });
269
+ const temporary = `${target}.${randomUUID()}.tmp`;
270
+ try {
271
+ const handle = await open(
272
+ temporary,
273
+ constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW,
274
+ 0o600,
275
+ );
276
+ await pipeline(Readable.from(response.body), verify, handle.createWriteStream());
277
+ assert(
278
+ byteSize === file.byteSize,
279
+ `Downloaded Model Version file ${file.path} has an unexpected size.`,
280
+ );
281
+ assert(
282
+ hash.digest("hex") === file.sha256,
283
+ `Downloaded Model Version file ${file.path} has an invalid hash.`,
284
+ );
285
+ await rename(temporary, target);
286
+ } catch (error) {
287
+ await rm(temporary, { force: true });
288
+ throw error;
289
+ }
290
+ }
291
+
292
+ io.stdout(`Downloaded Model Version ${descriptor.id} revision ${descriptor.revision} to ${root}`);
293
+ };