diff --git a/.sqlx/query-a2c9e2f61eba666254f8432b3c50a0a7738ee3b3faa77c5281bc8e4af96159b9.json b/.sqlx/query-6948edca3f06643605695665df51cc94f897e2cb9a2d6906910d58d4d56ee73e.json similarity index 80% rename from .sqlx/query-a2c9e2f61eba666254f8432b3c50a0a7738ee3b3faa77c5281bc8e4af96159b9.json rename to .sqlx/query-6948edca3f06643605695665df51cc94f897e2cb9a2d6906910d58d4d56ee73e.json index f355814c5f..cbe8c09b10 100644 --- a/.sqlx/query-a2c9e2f61eba666254f8432b3c50a0a7738ee3b3faa77c5281bc8e4af96159b9.json +++ b/.sqlx/query-6948edca3f06643605695665df51cc94f897e2cb9a2d6906910d58d4d56ee73e.json @@ -1,6 +1,6 @@ { "db_name": "MySQL", - "query": "\nSELECT\n jobs.token as `job_token: tokens::tokens::generic_inference_jobs::InferenceJobToken`,\n\n jobs.status as `status: enums::common::job_status_plus::JobStatusPlus`,\n jobs.attempt_count,\n\n jobs.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n jobs.maybe_creator_anonymous_visitor_token as `maybe_creator_anonymous_visitor_token: tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken`,\n jobs.creator_ip_address,\n\n jobs.product_category as `product_category: enums::by_table::generic_inference_jobs::inference_job_product_category::InferenceJobProductCategory`,\n jobs.inference_category as `inference_category: enums::by_table::generic_inference_jobs::inference_category::InferenceCategory`,\n jobs.maybe_model_type,\n jobs.maybe_model_token,\n jobs.maybe_raw_inference_text,\n jobs.maybe_inference_args,\n\n jobs.frontend_failure_category as `maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory`,\n jobs.failure_reason,\n\n jobs.on_success_result_entity_type as maybe_result_entity_type,\n jobs.on_success_result_entity_token as maybe_result_entity_token,\n jobs.on_success_result_batch_token as maybe_result_batch_token,\n\n model_weights.title as maybe_model_weights_title,\n tts_models.title as maybe_tts_model_title,\n voice_conversion_models.title as maybe_voice_conversion_model_title,\n\n tts_results.public_bucket_wav_audio_path as maybe_tts_public_bucket_path,\n voice_conversion_results.public_bucket_hash as maybe_voice_conversion_public_bucket_hash,\n\n media_files.public_bucket_directory_hash as maybe_media_file_public_bucket_directory_hash,\n media_files.maybe_public_bucket_prefix as maybe_media_file_public_bucket_prefix,\n media_files.maybe_public_bucket_extension as maybe_media_file_public_bucket_extension,\n\n jobs.assigned_worker as maybe_assigned_worker,\n jobs.assigned_cluster as maybe_assigned_cluster,\n\n jobs.is_keepalive_required,\n\n jobs.created_at,\n jobs.updated_at,\n\n jobs.first_started_at as maybe_first_started_at,\n jobs.successfully_completed_at as maybe_successfully_completed_at,\n\n NOW() as database_clock\n\nFROM generic_inference_jobs as jobs\n\nLEFT OUTER JOIN model_weights ON jobs.maybe_model_token = model_weights.token\nLEFT OUTER JOIN tts_models ON jobs.maybe_model_token = tts_models.token\nLEFT OUTER JOIN voice_conversion_models ON jobs.maybe_model_token = voice_conversion_models.token\n\nLEFT OUTER JOIN tts_results ON jobs.on_success_result_entity_token = tts_results.token\nLEFT OUTER JOIN voice_conversion_results ON jobs.on_success_result_entity_token = voice_conversion_results.token\nLEFT OUTER JOIN media_files ON jobs.on_success_result_entity_token = media_files.token\n\nWHERE jobs.token = ?\n ", + "query": "\nSELECT\n jobs.token as `job_token: tokens::tokens::generic_inference_jobs::InferenceJobToken`,\n\n jobs.status as `status: enums::common::job_status_plus::JobStatusPlus`,\n jobs.attempt_count,\n\n jobs.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n jobs.maybe_creator_anonymous_visitor_token as `maybe_creator_anonymous_visitor_token: tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken`,\n jobs.creator_ip_address,\n\n jobs.product_category as `product_category: enums::by_table::generic_inference_jobs::inference_job_product_category::InferenceJobProductCategory`,\n jobs.inference_category as `inference_category: enums::by_table::generic_inference_jobs::inference_category::InferenceCategory`,\n jobs.maybe_model_type,\n jobs.maybe_model_token,\n jobs.maybe_raw_inference_text,\n jobs.maybe_inference_args,\n jobs.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`,\n\n jobs.frontend_failure_category as `maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory`,\n jobs.failure_reason,\n\n jobs.on_success_result_entity_type as maybe_result_entity_type,\n jobs.on_success_result_entity_token as maybe_result_entity_token,\n jobs.on_success_result_batch_token as maybe_result_batch_token,\n\n model_weights.title as maybe_model_weights_title,\n tts_models.title as maybe_tts_model_title,\n voice_conversion_models.title as maybe_voice_conversion_model_title,\n\n tts_results.public_bucket_wav_audio_path as maybe_tts_public_bucket_path,\n voice_conversion_results.public_bucket_hash as maybe_voice_conversion_public_bucket_hash,\n\n media_files.public_bucket_directory_hash as maybe_media_file_public_bucket_directory_hash,\n media_files.maybe_public_bucket_prefix as maybe_media_file_public_bucket_prefix,\n media_files.maybe_public_bucket_extension as maybe_media_file_public_bucket_extension,\n\n jobs.assigned_worker as maybe_assigned_worker,\n jobs.assigned_cluster as maybe_assigned_cluster,\n\n jobs.is_keepalive_required,\n\n jobs.created_at,\n jobs.updated_at,\n\n jobs.first_started_at as maybe_first_started_at,\n jobs.successfully_completed_at as maybe_successfully_completed_at,\n\n NOW() as database_clock\n\nFROM generic_inference_jobs as jobs\n\nLEFT OUTER JOIN model_weights ON jobs.maybe_model_token = model_weights.token\nLEFT OUTER JOIN tts_models ON jobs.maybe_model_token = tts_models.token\nLEFT OUTER JOIN voice_conversion_models ON jobs.maybe_model_token = voice_conversion_models.token\n\nLEFT OUTER JOIN tts_results ON jobs.on_success_result_entity_token = tts_results.token\nLEFT OUTER JOIN voice_conversion_results ON jobs.on_success_result_entity_token = voice_conversion_results.token\nLEFT OUTER JOIN media_files ON jobs.on_success_result_entity_token = media_files.token\n\nWHERE jobs.token = ?\n ", "describe": { "columns": [ { @@ -125,7 +125,7 @@ }, { "ordinal": 12, - "name": "maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory", + "name": "maybe_prompt_token: tokens::tokens::prompts::PromptToken", "type_info": { "type": "VarString", "flags": "BINARY", @@ -135,6 +135,16 @@ }, { "ordinal": 13, + "name": "maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory", + "type_info": { + "type": "VarString", + "flags": "BINARY", + "char_set": 224, + "max_size": 128 + } + }, + { + "ordinal": 14, "name": "failure_reason", "type_info": { "type": "VarString", @@ -144,7 +154,7 @@ } }, { - "ordinal": 14, + "ordinal": 15, "name": "maybe_result_entity_type", "type_info": { "type": "VarString", @@ -154,7 +164,7 @@ } }, { - "ordinal": 15, + "ordinal": 16, "name": "maybe_result_entity_token", "type_info": { "type": "VarString", @@ -164,7 +174,7 @@ } }, { - "ordinal": 16, + "ordinal": 17, "name": "maybe_result_batch_token", "type_info": { "type": "VarString", @@ -174,7 +184,7 @@ } }, { - "ordinal": 17, + "ordinal": 18, "name": "maybe_model_weights_title", "type_info": { "type": "VarString", @@ -184,7 +194,7 @@ } }, { - "ordinal": 18, + "ordinal": 19, "name": "maybe_tts_model_title", "type_info": { "type": "VarString", @@ -194,7 +204,7 @@ } }, { - "ordinal": 19, + "ordinal": 20, "name": "maybe_voice_conversion_model_title", "type_info": { "type": "VarString", @@ -204,7 +214,7 @@ } }, { - "ordinal": 20, + "ordinal": 21, "name": "maybe_tts_public_bucket_path", "type_info": { "type": "VarString", @@ -214,7 +224,7 @@ } }, { - "ordinal": 21, + "ordinal": 22, "name": "maybe_voice_conversion_public_bucket_hash", "type_info": { "type": "VarString", @@ -224,7 +234,7 @@ } }, { - "ordinal": 22, + "ordinal": 23, "name": "maybe_media_file_public_bucket_directory_hash", "type_info": { "type": "VarString", @@ -234,7 +244,7 @@ } }, { - "ordinal": 23, + "ordinal": 24, "name": "maybe_media_file_public_bucket_prefix", "type_info": { "type": "VarString", @@ -244,7 +254,7 @@ } }, { - "ordinal": 24, + "ordinal": 25, "name": "maybe_media_file_public_bucket_extension", "type_info": { "type": "VarString", @@ -254,7 +264,7 @@ } }, { - "ordinal": 25, + "ordinal": 26, "name": "maybe_assigned_worker", "type_info": { "type": "VarString", @@ -264,7 +274,7 @@ } }, { - "ordinal": 26, + "ordinal": 27, "name": "maybe_assigned_cluster", "type_info": { "type": "VarString", @@ -274,7 +284,7 @@ } }, { - "ordinal": 27, + "ordinal": 28, "name": "is_keepalive_required", "type_info": { "type": "Tiny", @@ -284,7 +294,7 @@ } }, { - "ordinal": 28, + "ordinal": 29, "name": "created_at", "type_info": { "type": "Timestamp", @@ -294,7 +304,7 @@ } }, { - "ordinal": 29, + "ordinal": 30, "name": "updated_at", "type_info": { "type": "Timestamp", @@ -304,7 +314,7 @@ } }, { - "ordinal": 30, + "ordinal": 31, "name": "maybe_first_started_at", "type_info": { "type": "Timestamp", @@ -314,7 +324,7 @@ } }, { - "ordinal": 31, + "ordinal": 32, "name": "maybe_successfully_completed_at", "type_info": { "type": "Timestamp", @@ -324,7 +334,7 @@ } }, { - "ordinal": 32, + "ordinal": 33, "name": "database_clock", "type_info": { "type": "Datetime", @@ -365,6 +375,7 @@ true, true, true, + true, false, false, false, @@ -373,5 +384,5 @@ false ] }, - "hash": "a2c9e2f61eba666254f8432b3c50a0a7738ee3b3faa77c5281bc8e4af96159b9" + "hash": "6948edca3f06643605695665df51cc94f897e2cb9a2d6906910d58d4d56ee73e" } diff --git a/_database/sql/migrations_squashed/generic_inference_jobs.sql b/_database/sql/migrations_squashed/generic_inference_jobs.sql index de83a46240..a8ce198d7e 100644 --- a/_database/sql/migrations_squashed/generic_inference_jobs.sql +++ b/_database/sql/migrations_squashed/generic_inference_jobs.sql @@ -109,7 +109,7 @@ CREATE TABLE generic_inference_jobs ( -- If we pre-constructed a prompt, this will be copied to the resultant media generated. -- This is especially important for Fal-related jobs and endpoints. We need this for keeping -- track of all the prompt details, context images, etc. - maybe_prompt_token VARCHAR(30) DEFAULT NULL, + maybe_prompt_token VARCHAR(32) DEFAULT NULL, -- A migration flag we can control from the backend API service which will tell -- the worker where to store the results. If false, GCP. If true, AWS. diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/jobs/list_session_jobs.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/jobs/list_session_jobs.rs index fb50890c10..3341832439 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/jobs/list_session_jobs.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/jobs/list_session_jobs.rs @@ -1,16 +1,17 @@ use crate::common::responses::job_details::{JobDetailsLipsyncRequest, JobDetailsLivePortraitRequest}; use crate::common::responses::media_links::MediaLinks; use chrono::{DateTime, Utc}; +use enums::api_safe::by_table::generic_inference_jobs::frontend_failure_category_for_api_clients::FrontendFailureCategoryForApiClients; +use enums::api_safe::by_table::generic_inference_jobs::frontend_failure_category_for_old_clients::FrontendFailureCategoryForOldClients; use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory; use enums::common::job_status_plus::JobStatusPlus; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use serde::Deserialize; use serde::Serialize; -use tokens::tokens::generic_inference_jobs::InferenceJobToken; -use utoipa::{IntoParams, ToSchema}; -use enums::api_safe::by_table::generic_inference_jobs::frontend_failure_category_for_api_clients::FrontendFailureCategoryForApiClients; -use enums::api_safe::by_table::generic_inference_jobs::frontend_failure_category_for_old_clients::FrontendFailureCategoryForOldClients; use tokens::tokens::batch_generations::BatchGenerationToken; +use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; +use utoipa::{IntoParams, ToSchema}; pub const LIST_SESSION_JOBS_URL_PATH: &str = "/v1/jobs/session"; @@ -53,6 +54,9 @@ pub struct ListSessionJobsItem { #[derive(Serialize, Deserialize, ToSchema)] pub struct ListSessionRequestDetailsResponse { pub inference_category: InferenceCategory, + + pub maybe_prompt_token: Option, + pub maybe_model_type: Option, pub maybe_model_token: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs index bb83d62979..6395b8feed 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs @@ -5,14 +5,15 @@ use sqlx::pool::PoolConnection; use sqlx::{FromRow, MySql, MySqlPool, QueryBuilder, Row}; use enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory; -use enums::traits::mysql_from_row::MySqlFromRow as _; use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory; use enums::by_table::generic_inference_jobs::inference_job_product_category::InferenceJobProductCategory; use enums::common::job_status_plus::JobStatusPlus; +use enums::traits::mysql_from_row::MySqlFromRow as _; use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; use tokens::traits::mysql_token_from_row::MySqlTokenFromRow; @@ -97,6 +98,7 @@ SELECT jobs.maybe_model_token, jobs.maybe_raw_inference_text, jobs.maybe_inference_args, + jobs.maybe_prompt_token, jobs.frontend_failure_category as maybe_frontend_failure_category, jobs.failure_reason, @@ -266,6 +268,7 @@ fn raw_records_to_public_result(records: Vec) -> V maybe_model_title: maybe_model_title.map(|title| title.to_string()), maybe_raw_inference_text: record.maybe_raw_inference_text, maybe_inference_args: record.maybe_inference_args, + maybe_prompt_token: record.maybe_prompt_token, maybe_style_name, }, maybe_result_details, @@ -300,6 +303,7 @@ struct RawGenericInferenceJobStatus { pub maybe_model_token: Option, pub maybe_raw_inference_text: Option, pub maybe_inference_args: Option, + pub maybe_prompt_token: Option, pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, @@ -359,6 +363,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus { maybe_model_token: row.try_get("maybe_model_token")?, maybe_raw_inference_text: row.try_get("maybe_raw_inference_text")?, maybe_inference_args: row.try_get("maybe_inference_args")?, + maybe_prompt_token: PromptToken::try_from_mysql_row_nullable(row, "maybe_prompt_token")?, maybe_result_entity_type: row.try_get("maybe_result_entity_type")?, maybe_result_entity_token: row.try_get("maybe_result_entity_token")?, maybe_result_batch_token: row.try_get("maybe_result_batch_token")?, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs index 926ccf7e56..260ec15f3d 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs @@ -12,6 +12,7 @@ use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; use crate::helpers::boolean_converters::i8_to_bool; @@ -55,6 +56,7 @@ SELECT jobs.maybe_model_token, jobs.maybe_raw_inference_text, jobs.maybe_inference_args, + jobs.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`, jobs.frontend_failure_category as `maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory`, jobs.failure_reason, @@ -241,6 +243,7 @@ fn raw_record_to_public_result(record: RawGenericInferenceJobStatus) -> GenericI maybe_model_title: maybe_model_title.map(|title| title.to_string()), maybe_raw_inference_text: record.maybe_raw_inference_text, maybe_inference_args: record.maybe_inference_args, + maybe_prompt_token: record.maybe_prompt_token, maybe_style_name, }, maybe_result_details, @@ -273,6 +276,7 @@ struct RawGenericInferenceJobStatus { pub maybe_model_token: Option, pub maybe_raw_inference_text: Option, pub maybe_inference_args: Option, + pub maybe_prompt_token: Option, pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs index 72181cefa7..fceca50835 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs @@ -8,6 +8,7 @@ use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; /// Shared inference job status struct for several queries (list, get, batch get) @@ -57,6 +58,9 @@ pub struct RequestDetails { /// Raw JSON payload of polymorphic inference args pub maybe_inference_args: Option, + /// Prompt token linking this job to its prompt record. + pub maybe_prompt_token: Option, + /// For Comfy / Video Style Transfer jobs, this might include /// the name of the selected style. pub maybe_style_name: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs index ed4ee37d3d..af6d133550 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs @@ -15,6 +15,7 @@ use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; use tokens::traits::mysql_token_from_row::MySqlTokenFromRow; @@ -163,6 +164,7 @@ SELECT jobs.maybe_model_token, jobs.maybe_raw_inference_text, jobs.maybe_inference_args, + jobs.maybe_prompt_token, jobs.frontend_failure_category as maybe_frontend_failure_category, jobs.failure_reason, @@ -332,6 +334,7 @@ fn raw_records_to_public_result(records: Vec) -> V maybe_model_title: maybe_model_title.map(|title| title.to_string()), maybe_raw_inference_text: record.maybe_raw_inference_text, maybe_inference_args: record.maybe_inference_args, + maybe_prompt_token: record.maybe_prompt_token, maybe_style_name, }, maybe_result_details, @@ -366,6 +369,7 @@ struct RawGenericInferenceJobStatus { pub maybe_model_token: Option, pub maybe_raw_inference_text: Option, pub maybe_inference_args: Option, + pub maybe_prompt_token: Option, pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, @@ -425,6 +429,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus { maybe_model_token: row.try_get("maybe_model_token")?, maybe_raw_inference_text: row.try_get("maybe_raw_inference_text")?, maybe_inference_args: row.try_get("maybe_inference_args")?, + maybe_prompt_token: PromptToken::try_from_mysql_row_nullable(row, "maybe_prompt_token")?, maybe_result_entity_type: row.try_get("maybe_result_entity_type")?, maybe_result_entity_token: row.try_get("maybe_result_entity_token")?, maybe_result_batch_token: row.try_get("maybe_result_batch_token")?, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs index 35dd02eccc..82783c2714 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs @@ -30,6 +30,7 @@ use redis::Commands; use redis_common::redis_keys::RedisKeys; use server_environment::ServerEnvironment; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use utoipa::{IntoParams, ToSchema}; /// For certain jobs or job classes (eg. non-premium), we kill the jobs if the user hasn't @@ -73,6 +74,9 @@ pub struct BatchInferenceJobStatusResponsePayload { #[derive(Serialize, ToSchema)] pub struct BatchRequestDetailsResponse { pub inference_category: InferenceCategory, + + pub maybe_prompt_token: Option, + pub maybe_model_type: Option, pub maybe_model_token: Option, @@ -253,6 +257,7 @@ fn db_record_to_response_payload( job_token: record.job_token, request: BatchRequestDetailsResponse { inference_category: record.request_details.inference_category, + maybe_prompt_token: record.request_details.maybe_prompt_token, maybe_model_type: maybe_filter_model_name(record.request_details.maybe_model_type.as_deref()), maybe_model_token: record.request_details.maybe_model_token, maybe_model_title: record.request_details.maybe_model_title, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs index ff16973654..222a544b60 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs @@ -28,6 +28,7 @@ use redis::{Commands, RedisResult}; use redis_common::redis_keys::RedisKeys; use server_environment::ServerEnvironment; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use utoipa::ToSchema; /// For certain jobs or job classes (eg. non-premium), we kill the jobs if the user hasn't @@ -64,6 +65,9 @@ pub struct InferenceJobStatusResponsePayload { #[derive(Serialize, ToSchema)] pub struct RequestDetailsResponse { pub inference_category: InferenceCategory, + + pub maybe_prompt_token: Option, + pub maybe_model_type: Option, pub maybe_model_token: Option, @@ -248,6 +252,7 @@ fn record_to_payload( job_token: record.job_token, request: RequestDetailsResponse { inference_category: record.request_details.inference_category, + maybe_prompt_token: record.request_details.maybe_prompt_token, maybe_model_type: maybe_filter_model_name(record.request_details.maybe_model_type.as_deref()), maybe_model_token: record.request_details.maybe_model_token, maybe_model_title: record.request_details.maybe_model_title, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs index e5e91882fc..e865c9dc2a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs @@ -207,6 +207,7 @@ fn db_record_to_response_payload( job_token: record.job_token, request: ListSessionRequestDetailsResponse { inference_category: record.request_details.inference_category, + maybe_prompt_token: record.request_details.maybe_prompt_token, maybe_model_type: maybe_filter_model_name(record.request_details.maybe_model_type.as_deref()), maybe_model_token: record.request_details.maybe_model_token, maybe_model_title: record.request_details.maybe_model_title,