feat: add inline external generation mode

This commit is contained in:
2026-06-07 00:56:53 +08:00
parent 853d1db618
commit 4bb6d0bd1e
20 changed files with 393 additions and 114 deletions

View File

@@ -642,9 +642,9 @@ pub struct PuzzleDraftCompileFailureRecordInput {
pub owner_user_id: String,
pub error_message: String,
pub failed_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
@@ -655,9 +655,9 @@ pub struct PuzzleLevelGenerationFailureRecordInput {
pub levels_json: Option<String>,
pub error_message: String,
pub failed_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
@@ -668,9 +668,9 @@ pub struct PuzzleGeneratedImagesSaveRecordInput {
pub levels_json: Option<String>,
pub candidates_json: String,
pub saved_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
@@ -683,9 +683,9 @@ pub struct PuzzleUiBackgroundSaveRecordInput {
pub image_src: String,
pub image_object_key: Option<String>,
pub saved_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]

View File

@@ -11,9 +11,9 @@ pub struct PuzzleDraftCompileFailureInput {
pub owner_user_id: String,
pub error_message: String,
pub failed_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
impl __sdk::InModule for PuzzleDraftCompileFailureInput {

View File

@@ -13,9 +13,9 @@ pub struct PuzzleGeneratedImagesSaveInput {
pub levels_json: Option<String>,
pub candidates_json: String,
pub saved_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
impl __sdk::InModule for PuzzleGeneratedImagesSaveInput {

View File

@@ -13,9 +13,9 @@ pub struct PuzzleLevelGenerationFailureInput {
pub levels_json: Option<String>,
pub error_message: String,
pub failed_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
impl __sdk::InModule for PuzzleLevelGenerationFailureInput {

View File

@@ -15,9 +15,9 @@ pub struct PuzzleUiBackgroundSaveInput {
pub image_src: String,
pub image_object_key: Option<String>,
pub saved_at_micros: i64,
pub external_generation_job_id: String,
pub external_generation_worker_id: String,
pub external_generation_lease_token: String,
pub external_generation_job_id: Option<String>,
pub external_generation_worker_id: Option<String>,
pub external_generation_lease_token: Option<String>,
}
impl __sdk::InModule for PuzzleUiBackgroundSaveInput {

View File

@@ -147,8 +147,13 @@ impl SpacetimeClient {
owner_user_id: String,
compiled_at_micros: i64,
) -> Result<PuzzleAgentSessionRecord, SpacetimeClientError> {
self.compile_puzzle_agent_draft_inner(session_id, owner_user_id, compiled_at_micros, None)
.await
self.compile_puzzle_agent_draft_inner(
session_id,
owner_user_id,
compiled_at_micros,
(None, None, None),
)
.await
}
pub async fn compile_puzzle_agent_draft_with_external_generation_guard(
@@ -156,19 +161,19 @@ impl SpacetimeClient {
session_id: String,
owner_user_id: String,
compiled_at_micros: i64,
external_generation_job_id: String,
external_generation_worker_id: String,
external_generation_lease_token: String,
external_generation_job_id: Option<String>,
external_generation_worker_id: Option<String>,
external_generation_lease_token: Option<String>,
) -> Result<PuzzleAgentSessionRecord, SpacetimeClientError> {
self.compile_puzzle_agent_draft_inner(
session_id,
owner_user_id,
compiled_at_micros,
Some((
(
external_generation_job_id,
external_generation_worker_id,
external_generation_lease_token,
)),
),
)
.await
}
@@ -178,17 +183,13 @@ impl SpacetimeClient {
session_id: String,
owner_user_id: String,
compiled_at_micros: i64,
external_generation_guard: Option<(String, String, String)>,
external_generation_guard: (Option<String>, Option<String>, Option<String>),
) -> Result<PuzzleAgentSessionRecord, SpacetimeClientError> {
let (
external_generation_job_id,
external_generation_worker_id,
external_generation_lease_token,
) = external_generation_guard
.map(|(job_id, worker_id, lease_token)| {
(Some(job_id), Some(worker_id), Some(lease_token))
})
.unwrap_or((None, None, None));
) = external_generation_guard;
let procedure_input = PuzzleDraftCompileInput {
session_id,
owner_user_id,