roder_ext_kimi_code/
extension.rs1use std::sync::Arc;
2
3use roder_api::capabilities::CapabilityRequest;
4use roder_api::catalog::PROVIDER_KIMI_CODE;
5use roder_api::extension::{
6 ExtensionManifest, ExtensionRegistryBuilder, ProvidedService, RoderExtension,
7};
8use semver::Version;
9
10use crate::provider::{KimiCodeConfig, KimiCodeInferenceEngine, KimiCodeProviderSpec};
11
12pub struct KimiCodeExtension {
13 config: KimiCodeConfig,
14}
15
16impl KimiCodeExtension {
17 pub fn new(config: KimiCodeConfig) -> Self {
18 Self { config }
19 }
20}
21
22impl RoderExtension for KimiCodeExtension {
23 fn manifest(&self) -> ExtensionManifest {
24 ExtensionManifest {
25 id: "roder-ext-kimi-code-provider".to_string(),
26 name: "Kimi Code Provider".to_string(),
27 version: Version::new(0, 1, 0),
28 api_version: "0.1.0".to_string(),
29 description: Some("Kimi Code (Moonshot AI) direct subscription inference provider".to_string()),
30 provides: vec![
31 ProvidedService::InferenceEngine(PROVIDER_KIMI_CODE.to_string()),
32 ],
33 required_capabilities: vec![CapabilityRequest::new("network.kimi.com")],
34 }
35 }
36
37 fn install(&self, registry: &mut ExtensionRegistryBuilder) -> anyhow::Result<()> {
38 registry.inference_engine(Arc::new(KimiCodeInferenceEngine::new(
39 self.config.clone(),
40 KimiCodeProviderSpec::default(),
41 )));
42 Ok(())
43 }
44}