Skip to main content

Crate canonic

Crate canonic 

Source
Expand description

§canonic

Versioned markdown canned-response corpus for Jira support workflows.

The CLI is a thin front end. Library consumers can call the same engines:

ModuleRole
corpusWalk and load snell-*.md responses
checkQuality 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 snell- templates and promote import → responses
tuiInteractive ratatui corpus browser (canonic tui)

§Example

use canonic::{default_corpus_dir, walk_responses, check_responses};

let dir = default_corpus_dir();
let responses = walk_responses(&dir).expect("read corpus");
let report = check_responses(&responses);
assert!(report.ok() || !report.findings.is_empty());

Markdown under corpus/responses/ remains the source of truth. Jira is a publication surface: convert for paste-in, import only as drafts under corpus/imports/, then scaffold::promote_to_corpus after review.

Re-exports§

pub use check::check_corpus;
pub use check::check_responses;
pub use check::format_check_report;
pub use check::CheckReport;
pub use check::REQUIRED_PREFIX;
pub use convert::convert_jira_to_markdown;
pub use convert::convert_markdown_to_jira;
pub use convert::convert_path_to_jira;
pub use convert::tool_available as pandoc_available;
pub use corpus::default_corpus_dir;
pub use corpus::load_response;
pub use corpus::walk_responses;
pub use corpus::CannedResponse;
pub use doctor::collect_statuses;
pub use doctor::critical_missing;
pub use doctor::format_doctor;
pub use doctor::ToolStatus;
pub use index::default_index_dir;
pub use index::find_duplicates;
pub use index::find_duplicates_jaccard;
pub use index::jaccard_similarity;
pub use index::reindex;
pub use index::search;
pub use index::self_query_for;
pub use index::tokenize;
pub use index::DedupePair;
pub use index::IndexDoc;
pub use index::SearchHit;
pub use jira_import::comment_body_to_text;
pub use jira_import::default_import_dir;
pub use jira_import::format_probe;
pub use jira_import::import_jira;
pub use jira_import::is_cloud_host;
pub use jira_import::plain_text_to_adf;
pub use jira_import::post_comment_from_markdown;
pub use jira_import::post_comment_from_markdown_with_format;
pub use jira_import::post_issue_comment;
pub use jira_import::post_issue_comment_with_format;
pub use jira_import::probe_jira;
pub use jira_import::CommentBodyFormat;
pub use jira_import::JiraAuth;
pub use jira_import::JiraConfig;
pub use jira_import::JiraProbe;
pub use jira_import::PostedComment;
pub use lint::format_report;
pub use lint::lint_paths;
pub use lint::lint_text_harper_inprocess;
pub use lint::LintEngine;
pub use lint::LintFinding;
pub use lint::LintReport;
pub use scaffold::check_response_path;
pub use scaffold::promote_to_corpus;
pub use scaffold::resolve_response_id;
pub use scaffold::scaffold_markdown;
pub use scaffold::write_scaffold;
pub use scaffold::ScaffoldOptions;
pub use scaffold::TEAM_SIGN_OFF;
pub use tui::run_tui;
pub use tui::App as TuiApp;

Modules§

check
Corpus quality checks for the shared snell prefix migration.
convert
Pandoc-backed markdown → Jira/Confluence wiki markup conversion.
corpus
Load and walk version-controlled markdown canned responses.
doctor
Health check for external and in-process tooling.
index
Tantivy-backed full-text index for search and near-duplicate detection.
jira_import
Free-tier Jira platform REST only (no Marketplace apps).
lint
Vale and Harper lint for the markdown corpus (CLI + in-process harper-core).
scaffold
Scaffold new snell- responses and promote import drafts into the published corpus.
tui
Interactive terminal UI for browsing and gating the canned-response corpus.