Skip to main content

chasm/
lib.rs

1// Copyright (c) 2024-2026 Nervosys LLC
2// SPDX-License-Identifier: AGPL-3.0-only
3//! Chat System Manager (CSM) - Library
4//!
5//! A library for managing and merging chat sessions across workspaces and LLM providers.
6//!
7//! ## Supported Providers
8//!
9//! - **VS Code Copilot Chat** - Default, file-based sessions
10//! - **Cursor** - Cursor IDE chat sessions
11//! - **Ollama** - Local LLM inference
12//! - **vLLM** - High-performance LLM serving
13//! - **Azure AI Foundry** - Microsoft's AI platform (Foundry Local)
14//! - **LM Studio** - Local model runner
15//! - **LocalAI** - Drop-in OpenAI replacement
16//! - **Text Generation WebUI** - oobabooga's web interface
17//! - **Jan.ai** - Open source ChatGPT alternative
18//! - **GPT4All** - Local privacy-focused AI
19//! - **Llamafile** - Portable executable LLMs
20//!
21//! ## Agent Development Kit (Agency)
22//!
23//! The `Agency` module provides a Rust-native framework for building AI agents:
24//!
25//! ```rust,ignore
26//! use csm::Agency::{Agent, AgentBuilder, Runtime, Tool};
27//!
28//! let agent = AgentBuilder::new("assistant")
29//!     .instruction("You are a helpful assistant.")
30//!     .model("gemini-2.5-flash")
31//!     .tool(Tool::web_search())
32//!     .build();
33//!
34//! let runtime = Runtime::new()?;
35//! runtime.register_agent(agent);
36//! let result = runtime.run("assistant", "Hello!").await?;
37//! ```
38
39// Library modules export public APIs for external use - suppress dead_code warnings
40#![allow(dead_code)]
41#![allow(unused_imports)]
42#![allow(clippy::upper_case_acronyms)]
43#![allow(clippy::type_complexity)]
44
45pub mod agency;
46pub mod analytics;
47pub mod api;
48pub mod automation;
49pub mod browser;
50pub mod cli;
51pub mod cloud_sync;
52pub mod commands;
53pub mod copilot_version;
54pub mod database;
55pub mod encryption;
56pub mod error;
57pub mod integrations;
58pub mod intelligence;
59pub mod mcp;
60pub mod models;
61pub mod plugins;
62pub mod providers;
63pub mod routing;
64pub mod scaling;
65pub mod schema;
66pub mod storage;
67pub mod sync;
68pub mod teams;
69pub mod telemetry;
70pub mod tui;
71pub mod workspace;
72
73// Re-export commonly used items
74pub use cli::{
75    Cli, Commands, ExportCommands, FetchCommands, FindCommands, GitCommands, ImportCommands,
76    ListCommands, MergeCommands, MigrationCommands, MoveCommands, ProviderCommands, RunCommands,
77    SchemaCommands, ShardCommands, ShowCommands,
78};
79pub use schema::{DetectedSchema, Ontology, ProviderSchema, SchemaRegistry, SchemaVersion};
80pub use database::{ChatDatabase, ShareLinkInfo, ShareLinkParser, ShareLinkProvider};
81pub use error::CsmError;
82pub use models::{
83    ChatMessage, ChatRequest, ChatSession, ChatSessionIndex, ChatSessionIndexEntry,
84    SessionWithPath, Workspace, WorkspaceJson,
85};
86pub use providers::{
87    CsmConfig, GenericMessage, GenericSession, ProviderConfig, ProviderRegistry, ProviderType,
88};
89pub use storage::{
90    add_session_to_index, backup_workspace_sessions, close_vscode_and_wait, compact_session_jsonl,
91    is_vscode_running, parse_session_auto, parse_session_file, parse_session_json,
92    parse_session_jsonl, read_chat_session_index, recover_from_all_backups, recover_from_jsonl_bak,
93    register_all_sessions_from_directory, reopen_vscode, repair_workspace_sessions,
94    sync_session_index, trim_session_jsonl, write_chat_session_index,
95};
96pub use workspace::{
97    decode_workspace_folder, discover_workspaces, find_workspace_by_path,
98    get_chat_sessions_from_workspace, get_workspace_by_hash, get_workspace_by_path,
99    get_workspace_storage_path, normalize_path,
100};