[package]
edition = "2024"
rust-version = "1.88"
name = "turnframe-runtime"
version = "0.1.1"
authors = ["Turnframe contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Deterministic turn orchestration runtime for Turnframe: interpretation, reduction, interactions, commands, events and response composition"
homepage = "https://turnframe.rs"
documentation = "https://docs.rs/turnframe"
readme = "README.md"
keywords = [
"llm",
"workflow",
"conversation",
"deterministic",
"orchestration",
]
categories = [
"asynchronous",
"api-bindings",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/turnframe-rs/turnframe"
[lib]
name = "turnframe_runtime"
path = "src/lib.rs"
[[test]]
name = "a_card_answered_on_a_failed_turn_stays_answerable"
path = "tests/a_card_answered_on_a_failed_turn_stays_answerable.rs"
[[test]]
name = "a_card_is_recorded_once_on_the_turn_that_created_it"
path = "tests/a_card_is_recorded_once_on_the_turn_that_created_it.rs"
[[test]]
name = "a_click_authorizes_only_its_own_card"
path = "tests/a_click_authorizes_only_its_own_card.rs"
[[test]]
name = "a_click_costs_no_call_at_any_effort"
path = "tests/a_click_costs_no_call_at_any_effort.rs"
[[test]]
name = "a_command_awaiting_its_click_survives_a_crash_unexecuted"
path = "tests/a_command_awaiting_its_click_survives_a_crash_unexecuted.rs"
[[test]]
name = "a_confirmation_runs_the_acts_that_waited_for_it"
path = "tests/a_confirmation_runs_the_acts_that_waited_for_it.rs"
[[test]]
name = "a_correction_keeps_what_the_last_turn_did_beside_the_value_it_changes"
path = "tests/a_correction_keeps_what_the_last_turn_did_beside_the_value_it_changes.rs"
[[test]]
name = "a_deployment_declares_the_languages_its_copy_speaks"
path = "tests/a_deployment_declares_the_languages_its_copy_speaks.rs"
[[test]]
name = "a_disputed_change_is_asked_for_again"
path = "tests/a_disputed_change_is_asked_for_again.rs"
[[test]]
name = "a_late_airline_answer_is_recorded_once"
path = "tests/a_late_airline_answer_is_recorded_once.rs"
[[test]]
name = "a_loyalty_number_given_as_the_name_lands_on_the_loyalty_number"
path = "tests/a_loyalty_number_given_as_the_name_lands_on_the_loyalty_number.rs"
[[test]]
name = "a_message_not_understood_still_moves_the_work_on"
path = "tests/a_message_not_understood_still_moves_the_work_on.rs"
[[test]]
name = "a_question_about_the_values_a_record_takes_asks_for_one"
path = "tests/a_question_about_the_values_a_record_takes_asks_for_one.rs"
[[test]]
name = "a_question_about_the_work_in_progress_asks_what_comes_next"
path = "tests/a_question_about_the_work_in_progress_asks_what_comes_next.rs"
[[test]]
name = "a_question_about_what_can_be_done_is_answered_from_what_is_on_offer"
path = "tests/a_question_about_what_can_be_done_is_answered_from_what_is_on_offer.rs"
[[test]]
name = "a_question_no_fact_answers_is_left_to_the_reply"
path = "tests/a_question_no_fact_answers_is_left_to_the_reply.rs"
[[test]]
name = "a_rebooking_card_is_stale_after_any_change_to_its_trip"
path = "tests/a_rebooking_card_is_stale_after_any_change_to_its_trip.rs"
[[test]]
name = "a_record_named_but_not_listed_is_looked_up"
path = "tests/a_record_named_but_not_listed_is_looked_up.rs"
[[test]]
name = "a_record_named_that_does_not_exist_is_offered_in_the_users_language"
path = "tests/a_record_named_that_does_not_exist_is_offered_in_the_users_language.rs"
[[test]]
name = "a_request_for_a_workflow_that_cannot_start_says_why"
path = "tests/a_request_for_a_workflow_that_cannot_start_says_why.rs"
[[test]]
name = "a_step_is_said_in_the_users_language_when_asked"
path = "tests/a_step_is_said_in_the_users_language_when_asked.rs"
[[test]]
name = "a_traveler_named_that_does_not_exist_is_offered_to_register"
path = "tests/a_traveler_named_that_does_not_exist_is_offered_to_register.rs"
[[test]]
name = "a_traveler_registered_for_a_trip_is_put_on_it"
path = "tests/a_traveler_registered_for_a_trip_is_put_on_it.rs"
[[test]]
name = "a_traveler_registered_turns_later_completes_the_trip_waiting_for_it"
path = "tests/a_traveler_registered_turns_later_completes_the_trip_waiting_for_it.rs"
[[test]]
name = "a_turn_can_be_traced_from_message_to_reply"
path = "tests/a_turn_can_be_traced_from_message_to_reply.rs"
[[test]]
name = "a_turn_forced_to_high_runs_at_high"
path = "tests/a_turn_forced_to_high_runs_at_high.rs"
[[test]]
name = "a_turn_left_alone_runs_at_the_configured_level"
path = "tests/a_turn_left_alone_runs_at_the_configured_level.rs"
[[test]]
name = "a_turn_that_recorded_nothing_is_not_shown_what_the_user_said"
path = "tests/a_turn_that_recorded_nothing_is_not_shown_what_the_user_said.rs"
[[test]]
name = "a_turn_writes_beyond_its_case"
path = "tests/a_turn_writes_beyond_its_case.rs"
[[test]]
name = "a_value_asked_for_is_expected_by_the_next_turn"
path = "tests/a_value_asked_for_is_expected_by_the_next_turn.rs"
[[test]]
name = "a_value_the_one_open_obligation_fixes_is_taken_from_it"
path = "tests/a_value_the_one_open_obligation_fixes_is_taken_from_it.rs"
[[test]]
name = "an_act_held_by_a_constraint_is_reported_left_alone"
path = "tests/an_act_held_by_a_constraint_is_reported_left_alone.rs"
[[test]]
name = "an_act_that_changes_nothing"
path = "tests/an_act_that_changes_nothing.rs"
[[test]]
name = "an_act_waiting_for_a_named_record_is_kept_until_it_is_done"
path = "tests/an_act_waiting_for_a_named_record_is_kept_until_it_is_done.rs"
[[test]]
name = "an_airline_that_never_answers_leaves_the_rebooking_unknown"
path = "tests/an_airline_that_never_answers_leaves_the_rebooking_unknown.rs"
[[test]]
name = "an_answer_to_an_obligation_completes_the_act_it_asks_for"
path = "tests/an_answer_to_an_obligation_completes_the_act_it_asks_for.rs"
[[test]]
name = "an_extra_already_on_the_trip_can_be_changed"
path = "tests/an_extra_already_on_the_trip_can_be_changed.rs"
[[test]]
name = "answer_length"
path = "tests/answer_length.rs"
[[test]]
name = "answering_your_own_question"
path = "tests/answering_your_own_question.rs"
[[test]]
name = "answers"
path = "tests/answers.rs"
[[test]]
name = "at_low_the_reply_is_not_reviewed_and_acts_are_still_verified"
path = "tests/at_low_the_reply_is_not_reviewed_and_acts_are_still_verified.rs"
[[test]]
name = "attachments_reach_the_model"
path = "tests/attachments_reach_the_model.rs"
[[test]]
name = "audit_record"
path = "tests/audit_record.rs"
[[test]]
name = "briefing"
path = "tests/briefing.rs"
[[test]]
name = "budget"
path = "tests/budget.rs"
[[test]]
name = "card_only_operation"
path = "tests/card_only_operation.rs"
[[test]]
name = "card_question_reaches_the_writer"
path = "tests/card_question_reaches_the_writer.rs"
[[test]]
name = "card_without_a_write"
path = "tests/card_without_a_write.rs"
[[test]]
name = "case_artifacts"
path = "tests/case_artifacts.rs"
[[test]]
name = "case_before_it_exists"
path = "tests/case_before_it_exists.rs"
[[test]]
name = "case_not_silently_writable"
path = "tests/case_not_silently_writable.rs"
[[test]]
name = "chaos"
path = "tests/chaos.rs"
[[test]]
name = "continuation"
path = "tests/continuation.rs"
[[test]]
name = "declined_card"
path = "tests/declined_card.rs"
[[test]]
name = "declining_the_rebooking_card_refuses_nothing"
path = "tests/declining_the_rebooking_card_refuses_nothing.rs"
[[test]]
name = "divergence_vocabulary"
path = "tests/divergence_vocabulary.rs"
[[test]]
name = "domain_enumerations"
path = "tests/domain_enumerations.rs"
[[test]]
name = "empty_turn"
path = "tests/empty_turn.rs"
[[test]]
name = "execution_refusal"
path = "tests/execution_refusal.rs"
[[test]]
name = "naming_the_record"
path = "tests/naming_the_record.rs"
[[test]]
name = "narration_brief"
path = "tests/narration_brief.rs"
[[test]]
name = "narration_guidance"
path = "tests/narration_guidance.rs"
[[test]]
name = "outbox_dispatch"
path = "tests/outbox_dispatch.rs"
[[test]]
name = "plan_only"
path = "tests/plan_only.rs"
[[test]]
name = "prompt_source"
path = "tests/prompt_source.rs"
[[test]]
name = "records_beyond_a_case"
path = "tests/records_beyond_a_case.rs"
[[test]]
name = "records_when_the_act_falls"
path = "tests/records_when_the_act_falls.rs"
[[test]]
name = "reduce_proptests"
path = "tests/reduce_proptests.rs"
[[test]]
name = "reduce_scenarios"
path = "tests/reduce_scenarios.rs"
[[test]]
name = "refresh_after_refusal"
path = "tests/refresh_after_refusal.rs"
[[test]]
name = "refusal"
path = "tests/refusal.rs"
[[test]]
name = "runtime_refusals"
path = "tests/runtime_refusals.rs"
[[test]]
name = "runtime_scenarios"
path = "tests/runtime_scenarios.rs"
[[test]]
name = "scope_switch"
path = "tests/scope_switch.rs"
[[test]]
name = "second_case_beside"
path = "tests/second_case_beside.rs"
[[test]]
name = "second_click"
path = "tests/second_click.rs"
[[test]]
name = "server_copy"
path = "tests/server_copy.rs"
[[test]]
name = "signals"
path = "tests/signals.rs"
[[test]]
name = "start_preconditions"
path = "tests/start_preconditions.rs"
[[test]]
name = "starting_an_open_case"
path = "tests/starting_an_open_case.rs"
[[test]]
name = "streaming_and_recovery"
path = "tests/streaming_and_recovery.rs"
[[test]]
name = "supersession"
path = "tests/supersession.rs"
[[test]]
name = "the_last_value_given_offers_what_comes_next"
path = "tests/the_last_value_given_offers_what_comes_next.rs"
[[test]]
name = "value_is_not_a_question"
path = "tests/value_is_not_a_question.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.blake3]
version = "1"
[dependencies.chrono]
version = "0.4"
features = [
"clock",
"serde",
"std",
]
default-features = false
[dependencies.futures]
version = "0.3"
[dependencies.indexmap]
version = "2"
features = ["serde"]
[dependencies.jsonschema]
version = "0.56"
default-features = false
[dependencies.schemars]
version = "1"
features = [
"preserve_order",
"chrono04",
"uuid1",
]
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
features = ["preserve_order"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"sync",
"time",
"rt",
"macros",
]
[dependencies.tracing]
version = "0.1"
[dependencies.turnframe-core]
version = "0.1.0"
[dependencies.turnframe-provider]
version = "0.1.0"
[dependencies.turnframe-store]
version = "0.1.0"
[dependencies.turnframe-tasks]
version = "0.1.0"
[dependencies.turnframe-understand]
version = "0.1.1"
[dependencies.uuid]
version = "1"
features = [
"v4",
"v7",
"serde",
]
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.futures]
version = "0.3"
[dev-dependencies.insta]
version = "1"
features = [
"json",
"yaml",
]
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.serde_json]
version = "1"
features = ["preserve_order"]
[dev-dependencies.tokio]
version = "1"
features = [
"sync",
"time",
"rt",
"macros",
"rt-multi-thread",
"macros",
]
[dev-dependencies.toml]
version = "1.1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
[dev-dependencies.turnframe-test]
version = "0.1.1"
[lints.clippy]
dbg_macro = "warn"
expect_used = "warn"
large_futures = "warn"
missing_errors_doc = "allow"
panic = "warn"
print_stderr = "warn"
print_stdout = "warn"
todo = "warn"
unimplemented = "warn"
unwrap_used = "warn"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "warn"
unsafe_code = "forbid"