KeiSeiKit-1.0/_primitives/_rust/kei-buddy/Cargo.toml
Parfii-bot 7bab6f52c1 feat(kei-buddy): scaffold runtime crate — 11-state onboarding FSM enum
First atom of the kei-buddy phase-1 plan. Pure scaffold — no business
logic; that comes in follow-up commits.

Crate location: _primitives/_rust/kei-buddy/
LOC: 262 across 7 files (largest src/state.rs 85 LOC; all <200).

Contents:
  * src/state.rs — OnboardState enum with 11 variants matching the
    TS state-machine in keisei-marketplace/src/lib/keibuddy/chat-onboard.ts:
    Intro, AskName, AskTone, AskInterests, AskHobbies, TopicSpecifics,
    TopicNowLater, TopicResearch, TopicSources, AskSchedule, Ready.
    serde(rename_all = "snake_case") matches TS naming.
    `next()` is a stub (returns self.clone(); real transitions TBD).
  * src/transition.rs — TransitionInput struct (user_text +
    extracted_fields json::Value). Struct only, no extraction yet.
  * src/error.rs — BuddyError enum via thiserror (StateMachine /
    Memory / Transport). No From impls yet.
  * src/lib.rs — module declarations + re-exports.
  * src/bin/kei-buddy.rs — minimal `kei-buddy serve` clap subcommand,
    currently prints "not yet implemented".
  * Cargo.toml — workspace member, maturity = "concept".
  * README.md — crate-level README, roadmap of 4 follow-up bullets.

Workspace registration: _primitives/_rust/Cargo.toml members list
gains "kei-buddy". Lockfile updated accordingly.

Verify-before-commit (RULE 0.13 §):
  * cargo check --offline -p kei-buddy: PASS
  * cargo test --offline -p kei-buddy --lib: 1 passed / 0 failed
    (state::tests::all_variants_serde_roundtrip)
  * cargo check --workspace --offline: PASS
  * STATUS-TRUTH MARKER from agent: shipped=scaffolding, stubs=1
    (state.rs:50 next() returns self.clone(), expected for scaffold)

Follow-up tasks (tracked in TaskList):
  * Port handleStep transition logic from chat-onboard.ts
  * LLM extract via kei-cortex
  * Memory binding via kei-memory-sqlite
  * Telegram webhook driver (new crate kei-telegram-webhook)
  * kei-tts trait + 4 backends (ElevenLabs / OpenAI / Google / Piper)
  * kei-stt trait + 3 backends (Whisper local / Deepgram / OpenAI API)
2026-05-12 13:14:00 +08:00

33 lines
939 B
TOML

[package]
name = "kei-buddy"
version = "0.1.0"
edition.workspace = true
rust-version.workspace = true
description = "KeiBuddy personal-assistant Telegram bot — onboarding state-machine + skeleton driver. Concept-level scaffold."
authors.workspace = true
license.workspace = true
[[bin]]
name = "kei-buddy"
path = "src/bin/kei-buddy.rs"
[lib]
name = "kei_buddy"
path = "src/lib.rs"
[dependencies]
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
tracing = "0.1"
clap = { workspace = true, features = ["derive"] }
[features]
# future: pulls in kei-notify-telegram for real Telegram transport
telegram = []
[package.metadata.keisei]
maturity = "concept"
description = "KeiBuddy personal-assistant: onboarding FSM + bot driver scaffold"
authors = ["Denis Parfionovich <parfionovich@keilab.io>"]