@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.
- package/README.md +2 -2
- package/dist/cli/toloka.js +138 -136
- package/dist/cli/toloka.js.jsc +0 -0
- package/dist/cli/toloka.js.jsc.sha256 +1 -1
- package/dist/cli/toloka.js.sha256 +1 -1
- package/docs/cli-v2.md +1 -1
- package/docs/cli.md +3 -1
- package/docs/getting-started.md +1 -1
- package/docs/limitations.md +2 -2
- package/docs/testing.md +1 -1
- package/examples/face-image-collection/README.md +1 -1
- package/openapi/gen/api.ts +1482 -777
- package/openapi/gen/models/createDatasetExportBody.ts +5 -3
- package/openapi/gen/models/createDatasetExportBodyFormat.ts +2 -0
- package/openapi/gen/models/createProjectTrainingBody.ts +6 -0
- package/openapi/gen/models/createTrainingRunBody.ts +6 -0
- package/openapi/gen/models/datasetExportReportTokens.ts +4 -1
- package/openapi/gen/models/datasetExportReportTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/datasetExportReportTokensTotal.ts +2 -0
- package/openapi/gen/models/estimateTrainingCostBody.ts +5 -0
- package/openapi/gen/models/exportJob.ts +2 -0
- package/openapi/gen/models/exportJobError.ts +3 -0
- package/openapi/gen/models/exportJobErrorAnyOf.ts +7 -0
- package/openapi/gen/models/exportJobErrorAnyOfCode.ts +2 -0
- package/openapi/gen/models/exportJobStatus.ts +1 -1
- package/openapi/gen/models/getTrainingRunLogsParams.ts +5 -0
- package/openapi/gen/models/gistingTrainingConfiguration.ts +13 -0
- package/openapi/gen/models/gistingTrainingConfigurationInput.ts +13 -0
- package/openapi/gen/models/gistingTrainingConfigurationInputRegime.ts +2 -0
- package/openapi/gen/models/gistingTrainingConfigurationRegime.ts +2 -0
- package/openapi/gen/models/index.ts +230 -16
- package/openapi/gen/models/listProjectTrainings200.ts +7 -0
- package/openapi/gen/models/listProjectTrainingsParams.ts +5 -0
- package/openapi/gen/models/listTrainingRuns200.ts +7 -0
- package/openapi/gen/models/listTrainingRunsParams.ts +5 -0
- package/openapi/gen/models/modelVersion.ts +6 -1
- package/openapi/gen/models/modelVersionContent.ts +4 -0
- package/openapi/gen/models/modelVersionContentDownload.ts +11 -0
- package/openapi/gen/models/modelVersionContentDownloadContent.ts +4 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOf.ts +10 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfManifestItem.ts +8 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfManifestItemMediaType.ts +2 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfNine.ts +8 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineManifestItem.ts +8 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineManifestItemMediaType.ts +2 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfNineRuntimeBase.ts +2 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfParent.ts +4 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOf.ts +6 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOfBaseModelId.ts +2 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfParentOneOfThree.ts +5 -0
- package/openapi/gen/models/modelVersionContentDownloadContentOneOfRuntimeBase.ts +2 -0
- package/openapi/gen/models/modelVersionContentDownloadFilesItem.ts +9 -0
- package/openapi/gen/models/modelVersionContentDownloadFilesItemMediaType.ts +2 -0
- package/openapi/gen/models/modelVersionContentOneOf.ts +10 -0
- package/openapi/gen/models/modelVersionContentOneOfManifestItem.ts +8 -0
- package/openapi/gen/models/modelVersionContentOneOfManifestItemMediaType.ts +2 -0
- package/openapi/gen/models/modelVersionContentOneOfNine.ts +8 -0
- package/openapi/gen/models/modelVersionContentOneOfNineManifestItem.ts +8 -0
- package/openapi/gen/models/modelVersionContentOneOfNineManifestItemMediaType.ts +2 -0
- package/openapi/gen/models/modelVersionContentOneOfNineRuntimeBase.ts +2 -0
- package/openapi/gen/models/modelVersionContentOneOfParent.ts +4 -0
- package/openapi/gen/models/modelVersionContentOneOfParentOneOf.ts +6 -0
- package/openapi/gen/models/modelVersionContentOneOfParentOneOfBaseModelId.ts +2 -0
- package/openapi/gen/models/modelVersionContentOneOfParentOneOfThree.ts +5 -0
- package/openapi/gen/models/modelVersionContentOneOfRuntimeBase.ts +2 -0
- package/openapi/gen/models/modelVersionProducer.ts +5 -0
- package/openapi/gen/models/prepareTrainingCostEstimateInputsBody.ts +2 -0
- package/openapi/gen/models/replaceTrainingConfigurationBody.ts +5 -0
- package/openapi/gen/models/sftTrainingConfiguration.ts +13 -0
- package/openapi/gen/models/sftTrainingConfigurationInput.ts +13 -0
- package/openapi/gen/models/sftTrainingConfigurationInputRegime.ts +2 -0
- package/openapi/gen/models/sftTrainingConfigurationRegime.ts +2 -0
- package/openapi/gen/models/training.ts +16 -0
- package/openapi/gen/models/trainingArchivedAt.ts +2 -0
- package/openapi/gen/models/trainingConfiguration.ts +4 -0
- package/openapi/gen/models/trainingConfigurationInput.ts +4 -0
- package/openapi/gen/models/trainingCostEstimate.ts +4 -0
- package/openapi/gen/models/trainingCostEstimateInputSet.ts +12 -0
- package/openapi/gen/models/trainingCostEstimateInputSetExports.ts +6 -0
- package/openapi/gen/models/trainingCostEstimateInputSetExportsValidation.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateInputSetId.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOf.ts +16 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputs.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTraining.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailure.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReport.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsTrainingReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidation.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailure.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReport.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfIssuesItem.ts +8 -0
- package/openapi/gen/models/trainingCostEstimateOneOfIssuesItemCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfIssuesItemPurpose.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwoseven.ts +23 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenBudget.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputs.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTraining.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailure.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReport.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsTrainingReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidation.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailure.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReport.ts +3 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItem.ts +8 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItemCode.ts +2 -0
- package/openapi/gen/models/trainingCostEstimateOneOfTwosevenIssuesItemPurpose.ts +2 -0
- package/openapi/gen/models/trainingDatasetItemFilter.ts +8 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/trainingDatasetItemFilterInput.ts +8 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItem.ts +12 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingDatasetItemFilterInputFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/trainingDatasetSelection.ts +6 -0
- package/openapi/gen/models/trainingDatasetSelectionInput.ts +6 -0
- package/openapi/gen/models/trainingId.ts +2 -0
- package/openapi/gen/models/trainingModelId.ts +3 -0
- package/openapi/gen/models/trainingModelSource.ts +4 -0
- package/openapi/gen/models/trainingModelSourceOneOf.ts +6 -0
- package/openapi/gen/models/trainingModelSourceOneOfBaseModelId.ts +2 -0
- package/openapi/gen/models/trainingModelSourceOneOfThree.ts +5 -0
- package/openapi/gen/models/trainingRun.ts +39 -0
- package/openapi/gen/models/trainingRunBillingStatus.ts +2 -0
- package/openapi/gen/models/trainingRunBlockedReason.ts +2 -0
- package/openapi/gen/models/trainingRunChargedAmount.ts +2 -0
- package/openapi/gen/models/trainingRunError.ts +3 -0
- package/openapi/gen/models/trainingRunErrorAnyOf.ts +7 -0
- package/openapi/gen/models/trainingRunErrorAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingRunId.ts +2 -0
- package/openapi/gen/models/trainingRunInputs.ts +3 -0
- package/openapi/gen/models/trainingRunInputsAnyOf.ts +7 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTraining.ts +15 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingContract.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilter.ts +9 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingReport.ts +9 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokens.ts +10 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfTrainingReportTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidation.ts +3 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOf.ts +15 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfContract.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilter.ts +9 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReport.ts +9 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokens.ts +10 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingRunInputsAnyOfValidationAnyOfReportTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingRunLogs.ts +9 -0
- package/openapi/gen/models/trainingRunLogsEntriesItem.ts +7 -0
- package/openapi/gen/models/trainingRunLogsEntriesItemLevel.ts +2 -0
- package/openapi/gen/models/trainingRunLogsNextCursor.ts +2 -0
- package/openapi/gen/models/trainingRunMessage.ts +2 -0
- package/openapi/gen/models/trainingRunOutputModelVersionRevision.ts +2 -0
- package/openapi/gen/models/trainingRunProgress.ts +3 -0
- package/openapi/gen/models/trainingRunProgressAnyOf.ts +10 -0
- package/openapi/gen/models/trainingRunProgressAnyOfMessage.ts +2 -0
- package/openapi/gen/models/trainingRunProgressAnyOfStep.ts +2 -0
- package/openapi/gen/models/trainingRunProgressAnyOfTotal.ts +2 -0
- package/openapi/gen/models/trainingRunQuote.ts +17 -0
- package/openapi/gen/models/trainingRunQuoteBudget.ts +9 -0
- package/openapi/gen/models/trainingRunQuoteInputs.ts +7 -0
- package/openapi/gen/models/trainingRunQuoteInputsTraining.ts +9 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingFailure.ts +3 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReport.ts +3 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingRunQuoteInputsTrainingReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidation.ts +3 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOf.ts +9 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailure.ts +3 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailureAnyOf.ts +7 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfFailureAnyOfCode.ts +2 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReport.ts +3 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOf.ts +9 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfErrorsItem.ts +5 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokens.ts +10 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensEstimatorVersion.ts +2 -0
- package/openapi/gen/models/trainingRunQuoteInputsValidationAnyOfReportAnyOfTokensTotal.ts +2 -0
- package/openapi/gen/models/trainingRunStatus.ts +2 -0
- package/openapi/gen/models/updateTrainingMetadataBody.ts +5 -0
- package/package.json +1 -1
- package/skills/catalog.json +19 -7
- package/skills/toloka-build/SKILL.md +3 -3
- package/skills/toloka-build/references/workflow-and-cli.md +19 -2
- package/skills/toloka-report-issue/references/report-template.md +1 -1
- package/src/cli/auth.ts +1 -1
- package/src/cli/bin.ts +1 -1
- package/src/cli/cost.ts +1 -1
- package/src/cli/models.ts +107 -2
- package/src/cli/program.ts +243 -0
- package/src/cli/project-context.ts +9 -10
- package/src/cli/project.ts +2 -1
- package/src/cli/secrets.ts +4 -4
- package/src/cli/trainings.ts +627 -0
- package/src/client.ts +164 -30
- package/src/index.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOf.ts +0 -6
- package/openapi/gen/models/createDatasetExportBodyOneOfFormat.ts +0 -2
- package/openapi/gen/models/createDatasetExportBodyOneOfThree.ts +0 -10
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeContract.ts +0 -2
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeFormat.ts +0 -2
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilter.ts +0 -9
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItem.ts +0 -6
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItem.ts +0 -4
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +0 -5
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +0 -5
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItem.ts +0 -12
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemOperator.ts +0 -2
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItem.ts +0 -4
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOf.ts +0 -5
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +0 -5
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemValue.ts +0 -2
|
@@ -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,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,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,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,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,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,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,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,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,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,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,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
|
+
};
|
package/package.json
CHANGED
package/skills/catalog.json
CHANGED
|
@@ -13,18 +13,30 @@
|
|
|
13
13
|
"testing",
|
|
14
14
|
"checks"
|
|
15
15
|
],
|
|
16
|
-
"version": "0.
|
|
17
|
-
"digest": "
|
|
18
|
-
"files": [
|
|
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": [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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/
|
|
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
|
|
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
|
|
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/
|
|
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
|
|
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.
|
|
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
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
|
-
["
|
|
159
|
-
...versions.map((version) => [
|
|
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
|
+
};
|