Crate canonic#
- crate canonic#
canonic
Versioned markdown canned-response corpus for Jira support workflows.
The CLI is a thin front end. Library consumers can call the same engines:
Module
Role
configcanonic.toml/--prefixshared id prefixcorpusWalk and load
{prefix}-*.mdresponsescheckQuality gate (prefix, sop, closings)
convertPandoc markdown ↔ Jira wiki markup
indexTantivy BM25 search and near-duplicate pairs
lintVale CLI + in-process Harper
doctorTooling probes
jira_importFree REST probe, read import, explicit comment POST
scaffoldNew templates and promote import → responses
tuiInteractive ratatui corpus browser (
canonic tui)Example
use canonic::{default_corpus_dir, walk_responses, check_responses, DEFAULT_PREFIX}; let dir = default_corpus_dir(); let responses = walk_responses(&dir).expect("read corpus"); let report = check_responses(&responses, DEFAULT_PREFIX); assert!(report.ok() || !report.findings.is_empty());
Markdown under
corpus/responses/remains the source of truth. The shared id prefix is user-chosen incanonic.toml(optional--prefixCLI override; defaultresp). Jira settings live under[jira]in the same files (prefercanonic.local.tomlfor tokens). Jira is a publication surface: convert for paste-in, import only as drafts undercorpus/imports/, thenscaffold::promote_to_corpusafter review.Modules
Re-exports
:rust:any:
canonic::check::CheckReport:rust:any:
canonic::check::check_corpus:rust:any:
canonic::check::check_responses:rust:any:
canonic::check::format_check_report:rust:any:
canonic::config::CanonicConfig:rust:any:
canonic::config::DEFAULT_PREFIX:rust:any:
canonic::config::JiraSettings:rust:any:
canonic::config::find_config_path:rust:any:
canonic::config::load_config:rust:any:
canonic::config::load_config_file:rust:any:
canonic::config::normalize_prefix:rust:any:
canonic::config::resolve_prefix:rust:any:
canonic::convert::convert_jira_to_markdown:rust:any:
canonic::convert::convert_markdown_to_jira:rust:any:
canonic::convert::convert_path_to_jira:rust:any:
canonic::convert::tool_available:rust:any:
canonic::corpus::CannedResponse:rust:any:
canonic::corpus::default_corpus_dir:rust:any:
canonic::corpus::load_response:rust:any:
canonic::corpus::walk_responses:rust:any:
canonic::doctor::ToolStatus:rust:any:
canonic::doctor::collect_statuses:rust:any:
canonic::doctor::critical_missing:rust:any:
canonic::doctor::format_doctor:rust:any:
canonic::index::DedupePair:rust:any:
canonic::index::IndexDoc:rust:any:
canonic::index::SearchHit:rust:any:
canonic::index::default_index_dir:rust:any:
canonic::index::find_duplicates:rust:any:
canonic::index::find_duplicates_jaccard:rust:any:
canonic::index::jaccard_similarity:rust:any:
canonic::index::reindex:rust:any:
canonic::index::search:rust:any:
canonic::index::self_query_for:rust:any:
canonic::index::tokenize:rust:any:
canonic::jira_import::CommentBodyFormat:rust:any:
canonic::jira_import::JiraAuth:rust:any:
canonic::jira_import::JiraConfig:rust:any:
canonic::jira_import::JiraProbe:rust:any:
canonic::jira_import::PostedComment:rust:any:
canonic::jira_import::comment_body_to_text:rust:any:
canonic::jira_import::default_import_dir:rust:any:
canonic::jira_import::format_probe:rust:any:
canonic::jira_import::import_jira:rust:any:
canonic::jira_import::is_cloud_host:rust:any:
canonic::jira_import::plain_text_to_adf:rust:any:
canonic::jira_import::post_comment_from_markdown:rust:any:
canonic::jira_import::post_comment_from_markdown_with_format:rust:any:
canonic::jira_import::post_issue_comment:rust:any:
canonic::jira_import::post_issue_comment_with_format:rust:any:
canonic::jira_import::probe_jira:rust:any:
canonic::lint::LintEngine:rust:any:
canonic::lint::LintFinding:rust:any:
canonic::lint::LintReport:rust:any:
canonic::lint::format_report:rust:any:
canonic::lint::lint_paths:rust:any:
canonic::lint::lint_text_harper_inprocess:rust:any:
canonic::scaffold::ScaffoldOptions:rust:any:
canonic::scaffold::TEAM_SIGN_OFF:rust:any:
canonic::scaffold::check_response_path:rust:any:
canonic::scaffold::promote_to_corpus:rust:any:
canonic::scaffold::resolve_response_id:rust:any:
canonic::scaffold::scaffold_markdown:rust:any:
canonic::scaffold::write_scaffold:rust:any:
canonic::tui::App:rust:any:
canonic::tui::run_tui:rust:any:
canonic::tui::run_tui_with_prefix