From 7289f641c634c1b9dad666de609c0572c6b9cf38 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Sun, 26 Apr 2026 02:43:59 +0900 Subject: [PATCH 01/10] first moving step --- .github/workflows/rust.yml | 35 - .gitignore | 40 +- .vscode/settings.json | 6 - Cargo.lock | 2845 ----------------------------------- Cargo.toml | 39 - README.md | 83 +- README_resource/icon.svg | 45 - README_resource/log-ggw.png | Bin 267454 -> 0 bytes apps/ggw/main.ts | 161 ++ auto_release.bash | 56 - bun.lock | 126 ++ chglog.md | 124 -- config_template.toml | 7 - docs/CNAME | 1 - docs/icon.svg | 45 - docs/index.html | 354 ----- docs/log-ggw.png | Bin 267454 -> 0 bytes icon.svg | 45 - package.json | 18 + packages/core/src/index.ts | 3 + reference/config.md | 3 - reference/logic_map.md | 7 - src/cli.rs | 288 ---- src/cli_helper.rs | 253 ---- src/commit_gen.rs | 50 - src/config.rs | 177 --- src/diff_sum_gen.rs | 22 - src/get_input.rs | 35 - src/git.rs | 133 -- src/helper.rs | 69 - src/llm.rs | 293 ---- src/main.rs | 436 ------ src/readme_gen.rs | 60 - src/which_sem.rs | 29 - tools/api_test/test.sh | 26 - tsconfig.json | 17 + 36 files changed, 364 insertions(+), 5567 deletions(-) delete mode 100644 .github/workflows/rust.yml delete mode 100644 .vscode/settings.json delete mode 100644 Cargo.lock delete mode 100644 Cargo.toml delete mode 100644 README_resource/icon.svg delete mode 100644 README_resource/log-ggw.png create mode 100644 apps/ggw/main.ts delete mode 100644 auto_release.bash create mode 100644 bun.lock delete mode 100644 chglog.md delete mode 100644 config_template.toml delete mode 100644 docs/CNAME delete mode 100644 docs/icon.svg delete mode 100644 docs/index.html delete mode 100644 docs/log-ggw.png delete mode 100644 icon.svg create mode 100644 package.json create mode 100644 packages/core/src/index.ts delete mode 100644 reference/config.md delete mode 100644 reference/logic_map.md delete mode 100644 src/cli.rs delete mode 100644 src/cli_helper.rs delete mode 100644 src/commit_gen.rs delete mode 100644 src/config.rs delete mode 100644 src/diff_sum_gen.rs delete mode 100644 src/get_input.rs delete mode 100644 src/git.rs delete mode 100644 src/helper.rs delete mode 100644 src/llm.rs delete mode 100644 src/main.rs delete mode 100644 src/readme_gen.rs delete mode 100644 src/which_sem.rs delete mode 100755 tools/api_test/test.sh create mode 100644 tsconfig.json diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index c2f16c7..0000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Rust - -on: - push: - branches: [ "main" ] - paths: - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - pull_request: - branches: [ "main" ] - paths: - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Cache dependencies - uses: Swatinem/rust-cache@v2 - - - name: Check - run: cargo check --verbose - - name: Run tests - run: cargo test --verbose diff --git a/.gitignore b/.gitignore index 77bfe43..a14702c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,34 @@ -/target -win_ggw.zip -**/*.DS_Store -/release/ -test_config.toml -src_old/ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d57b0b8..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "cSpell.words": [ - "dialoguer", - "gitdiff" - ] -} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 0027927..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,2845 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "aws-lc-rs" -version = "1.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.39.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399" -dependencies = [ - "cc", - "cmake", - "dunce", - "fs_extra", -] - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bitflags" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "cc" -version = "1.2.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" -dependencies = [ - "find-msvc-tools", - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "clap" -version = "4.5.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fa72306bb30daf11bc97773431628e5b4916e97aaa74b7d3f625d4d495da02" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2071365c5c56eae7d77414029dde2f4f4ba151cf68d5a3261c9a40de428ace93" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec5be1eea072311774b7b84ded287adbd9f293f9d23456817605c6042f4f5e0" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" - -[[package]] -name = "cmake" -version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" -dependencies = [ - "cc", -] - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "console" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" -dependencies = [ - "encode_unicode", - "libc", - "unicode-width", - "windows-sys 0.61.2", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "derive-getters" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "easy_storage" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc3a6e6d480b15527812afe3d20c047e1b856b53deec78d33371ed25bac761d" -dependencies = [ - "serde", - "serde_json", - "thiserror 2.0.18", - "toml", -] - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 5.3.0", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi 6.0.0", - "wasip2", - "wasip3", -] - -[[package]] -name = "ghost_git_writer" -version = "0.19.0" -dependencies = [ - "atty", - "chrono", - "clap", - "derive-getters", - "easy_storage", - "git2", - "home", - "indicatif", - "llm-api-rs", - "ollama-rs", - "reqwest 0.13.2", - "serde", - "serde_json", - "tokio", - "unicode-width", - "url", -] - -[[package]] -name = "git2" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" -dependencies = [ - "bitflags", - "libc", - "libgit2-sys", - "log", - "openssl-probe 0.1.6", - "openssl-sys", - "url", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" -dependencies = [ - "base64", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "system-configuration", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "indicatif" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" -dependencies = [ - "console", - "portable-atomic", - "unicode-width", - "unit-prefix", - "web-time", -] - -[[package]] -name = "ipnet" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys 0.3.1", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" -dependencies = [ - "jni-sys 0.4.1", -] - -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "libgit2-sys" -version = "0.18.3+1.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" -dependencies = [ - "cc", - "libc", - "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -] - -[[package]] -name = "libssh2-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "libz-sys" -version = "1.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52f4c29e2a68ac30c9087e1b772dc9f44a2b66ed44edf2266cf2be9b03dafc1" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "llm-api-rs" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2caadd5d8b4be5d532af35f898161b86412d3e3fb50eeff97d30650af18710f2" -dependencies = [ - "async-trait", - "reqwest 0.12.28", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "native-tls" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe 0.2.1", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "ollama-rs" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f647d8676b95a6b6205e11453c9fac338d73c9cdcc011c94d1ba9c9bfea582cd" -dependencies = [ - "async-stream", - "log", - "reqwest 0.12.28", - "schemars", - "serde", - "serde_json", - "static_assertions", - "thiserror 2.0.18", - "url", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "openssl" -version = "0.10.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "openssl-sys" -version = "0.9.112" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "portable-atomic" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls", - "socket2", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" -dependencies = [ - "aws-lc-rs", - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-tls", - "hyper-util", - "js-sys", - "log", - "mime", - "native-tls", - "percent-encoding", - "pin-project-lite", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-native-tls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "reqwest" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "mime", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pki-types", - "rustls-platform-verifier", - "serde", - "serde_json", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" -dependencies = [ - "aws-lc-rs", - "once_cell", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" -dependencies = [ - "openssl-probe 0.2.1", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-platform-verifier" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" -dependencies = [ - "core-foundation 0.10.1", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki", - "security-framework", - "security-framework-sys", - "webpki-root-certs", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.103.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" -dependencies = [ - "aws-lc-rs", - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" -dependencies = [ - "dyn-clone", - "ref-cast", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" -dependencies = [ - "bitflags", - "core-foundation 0.10.1", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "indexmap", - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_spanned" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "system-configuration" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.2", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap", - "serde_core", - "serde_spanned", - "toml_datetime", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_parser" -version = "1.0.10+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" -dependencies = [ - "winnow 1.0.0", -] - -[[package]] -name = "toml_writer" -version = "1.0.7+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "bitflags", - "bytes", - "futures-util", - "http", - "http-body", - "iri-string", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unit-prefix" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] -name = "web-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-root-certs" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" - -[[package]] -name = "winnow" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 8df7411..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,39 +0,0 @@ -[package] -name = "ghost_git_writer" -description = "write a git commit message, README or Diff Summary by LLM services." -version = "0.19.0" -repository = "https://github.com/Uliboooo/ghost_git_writer" -edition = "2024" -license = "MIT OR Apache-2.0" -authors = ["Uliboooo uliboulibo@gmail.com"] -homepage = "https://uliboooo.github.io/ghost_git_writer" - -[[bin]] -name = "ggw" -path = "src/main.rs" - -[profile.release] -opt-level = "z" -strip = true -lto = true -codegen-units = 1 -panic = "abort" - -[dependencies] -clap = { version = "4.5.*", features = ["derive"] } -git2 = "0.20.*" -ollama-rs = "0.3.*" -tokio = { version = "1.49.*", features = ["rt", "rt-multi-thread"] } -llm-api-rs = "0.1.*" -serde = { version = "1.0.*", features = ["derive"] } -serde_json = "1.0.149" -derive-getters = "0.5.*" -chrono = "0.4.*" -home = "0.5.*" -easy_storage = "0.4.*" -indicatif = "0.18.*" -unicode-width = "0.2.1" -url = "2.5.7" -atty = "0.2.14" -reqwest = { version = "0.13.2", features = ["json"] } - diff --git a/README.md b/README.md index c772b13..5644923 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,9 @@ -# ghost writer - `ggw` +# this branch WIP: move to TS + Bun -

- Icon
- Ghost git writer -

+## How to run -[![made-with-Rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg)](https://www.rust-lang.org/) +if you have bun, give executable permission to `main.ts` and run it to run command because scripts use shebang. -https://uliboooo.github.io/ghost_git_writer/ +## TODO -**⚠️ beta ⚠️** and this doc is unstable to updating now... - -## installing - -```zsh -cargo install ghost_git_writer -``` - -### set api key in enviroment variables - -- Gemini - - `GGW_GEMINI_API` - - `GEMINI_API_KEY` -- Anthropic - - `GGW_ANTHROPIC_API` -- OpenAI - - `GGW_OPENAI_API` -- Deepseek - - `GGW_DEEPSEEK_API` - -## usage - -```zsh -ggw [Options] -``` - -### use other source as diff - -```zsh -❯ gda --staged | ggw commit --stdin -m gemini/gemini-2.5-flash -⠏ LLM call...finished. Generated msg: -╭────────────────────────────────────────────────────────────╮ -│ feat: Set up Emacs with configuration migrated from Neovim │ -╰────────────────────────────────────────────────────────────╯ -continue?(y/n)>y -``` - -- Sub Commands - - `commit`: generate a git commit message from git diff by llm - - `readme`: generate a README from codebase. - - `sumdiff`: generate a summry of changes from git diff - - `which-sem`: in Sem Ver, Output which field should be incremented. -- Global Options(mainly) - - `-m --model`: model sepcific tag. there are tow pattern to specific model. - - `-p --path`: specific woek path. if it's empty, set current dir path. - - `-l --lang`: change output language.(default=english). e.g. `-l japanese` - - `-e --extra`: extra prompt. if you need to append order to llm. - - `--config`: config file path. if you need to locate other than `~/.config/ggw/config.toml` or `~/.ggw.toml`. - - `--oneline`: output only llm's return for cli pipes -- Options for `commit` - - `--auto-commit`: allow auto git commit by generated message - - `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD') -- Options for `readme` - - `-s --source `: source files path. A list of file paths separated by ','. - - `-d --directory `: souce file folder - - `--merge-readme`: allow merge to existing README.md -- Options for `sumdiff` - - `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD') -- Options for `which-sem` - - `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD') - -## Examples - -```shell -# give `git diff` to command -ggw commit -m gemini/gemini-2.0-flash -ggw commit -m gemini/gemini-3-flash-preview - -# gice `git diff 76fd1d0` to command -ggw sumdiff -D 76fd1d0 -m gemini/gemini-2.5-pro -``` +- [ ] setup Lib diff --git a/README_resource/icon.svg b/README_resource/icon.svg deleted file mode 100644 index 1c87506..0000000 --- a/README_resource/icon.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/README_resource/log-ggw.png b/README_resource/log-ggw.png deleted file mode 100644 index 08025e79e5e5734cc493c8f50c50241e50f7d666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267454 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�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�~@ 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 diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts new file mode 100644 index 0000000..b0abad2 --- /dev/null +++ b/apps/ggw/main.ts @@ -0,0 +1,161 @@ +#!/usr/bin/env bun + +import { Command } from "commander"; +import simpleGit from "simple-git"; +import { GoogleGenAI } from "@google/genai"; +import OpenAI from "openai"; +import { createInterface } from "node:readline/promises"; + +function fmt_output(s: string) { + const l = s.length; + const padding = 2; + const bar = "─".repeat(l + padding); + const top_bar = "╭" + bar + "╮"; + const bottom_bar = "╰" + bar + "╯"; + + const boddys = s.split("\n").map(line => `│ ${line} │`).join("\n"); + + return `${top_bar}\n${boddys}\n${bottom_bar}`; +} + +async function yes_no(prompt: string) { + const rl = createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const ans = await rl.question(`${prompt} (y/n): `); + rl.close(); + + return ans.toLowerCase() === "y"; +} + +function spinner(promise: Promise, text = "Processing") { + const frames = ["-", "\\", "|", "/"]; + return withSpinner(promise, text); + + async function withSpinner( + promise: Promise, + text: string + ): Promise { + let i = 0; + + process.stdout.write("\x1b[?25l"); // hide cursor + + const interval = setInterval(() => { + const frame = frames[i = (i + 1) % frames.length]; + process.stdout.write(`\r${frame} ${text}`); + }, 100); + + try { + try { + const result = await promise; + clearInterval(interval); + process.stdout.write(`\r✔ Done\n`); + return result; + } catch (err) { + clearInterval(interval); + process.stdout.write(`\r✖ Error\n`); + throw err; + } + } finally { + process.stdout.write("\x1b[?25h"); // show cursor + } + } + +} +async function call_gemini(model: string, prompt: string) { + const ai = new GoogleGenAI({}); + const res = await ai.models.generateContent({ + model: model, + contents: prompt + }); + + return res.text ?? "nothing"; +} + +async function call_openAI(model: string, prompt: string) { + const client = new OpenAI({ + apiKey: process.env["OPENAI_API_KEY"], + }); + + const chatComp = await client.chat.completions.create({ + messages: [{ role: 'user', content: prompt }], + model: model, + stream: true, + }); + let buf = "" + for await (const Chunk of chatComp) { + buf += Chunk; + } + return buf; + +} + +const program = new Command(); + +program.name("ggw").description("Ghost git Writer - CLI tool for AI-powered commits").version("0.1.0"); + +program + .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") + .option("-c, --config ", "path to config file") + .option("-l, --lang ", "select lang"); + +program.parse(); + +const options = program.opts(); +const lang = String(options.lang); +const input_model = ((inp => { + const cut = String(inp).split("/"); + if (cut.length >= 2) { + return [String(cut[0]), String(cut[1])] + } +})(options.model)); + +const pro = (input_model?.[0] ?? "gemini").toLowerCase(); +const model = input_model?.[1] ?? "gemini-3-flash-preview"; + + +const git = simpleGit(); +const diff = await git.diff(); + +const prompt = `You are an assistant that writes Git commit messages.\ +When code changes include modifications to documentation files (e.g., README.md, docs/), ignore those changes and generate the commit message based solely on source code changes.\ +Given a description of code changes, output only a single-line commit message in Conventional Commits format (e.g., \"feat:\", \"fix:\", \"docs:\", etc.).\ +Do not include any extra text, code blocks, or formatting. Only output the commit message.\ +git status info and diff changes:\ +${diff} +Please answer in ${lang}` + +const cmt_msg_p = ((input_provider => { + if (input_provider === "gemini") { + return call_gemini(model, prompt); + } else if (input_provider === "openai") { + return call_openAI(model, prompt); + } else { + console.error(`this provider (${input_provider}) was not supported.`) + process.exit(1); + } +})(pro)); + +const cmt_msg = await spinner(cmt_msg_p, `Calling ${model} ...`); + +console.log(fmt_output(cmt_msg)); + +const git_res = await (async (y_n: boolean) => { + if (y_n) { + const res_git_add = await git.add("."); + const res_git_cmt = await git.commit(cmt_msg); + return [res_git_add, res_git_cmt]; + } else { + console.error("cannceld."); + process.exit(1); + } +})(await yes_no("git commit as this message?")); + +if (git_res == null) { + console.log("failed to git add or commit"); +} else { + console.log("ok."); +} + diff --git a/auto_release.bash b/auto_release.bash deleted file mode 100644 index ed9a0c0..0000000 --- a/auto_release.bash +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -ver="$1" - -success_builds=0 -success_zips=0 - -# build -if cargo build --release; then - success_builds=$((success_builds + 1)) -else - echo "❌ failed to build for arm mac" -fi - -if cargo build --release --target x86_64-pc-windows-gnu; then - success_builds=$((success_builds + 1)) -else - echo "❌ failed to build for windows" -fi - -if cargo build --release --target x86_64-unknown-linux-gnu; then - success_builds=$((success_builds + 1)) -else - echo "❌ failed to build for linux" -fi - -# zip -rm -r ./release && mkdir -p ./release - -if zip -j ./release/ggw_${ver}_arm_mac.zip ./target/release/ggw; then - success_zips=$((success_zips + 1)) -else - echo "❌ failed to zip for arm mac" -fi - -if zip -j ./release/ggw_${ver}_win.zip ./target/x86_64-pc-windows-gnu/release/ggw.exe; then - success_zips=$((success_zips + 1)) -else - echo "❌ failed to zip for windows" -fi - -if zip -j ./release/ggw_${ver}_linux.zip ./target/x86_64-unknown-linux-gnu/release/ggw; then - success_zips=$((success_zips + 1)) -else - echo "❌ failed to zip for linux" -fi - -# build results -[ "$success_builds" -ge 1 ] && echo "✅ success arm mac build" -[ "$success_builds" -ge 2 ] && echo "✅ success windows build" -[ "$success_builds" -ge 3 ] && echo "✅ success linux build" - -# zip results -[ "$success_zips" -ge 1 ] && echo "✅ success arm mac zip" -[ "$success_zips" -ge 2 ] && echo "✅ success windows zip" -[ "$success_zips" -ge 3 ] && echo "✅ success linux zip" diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..a5c55fc --- /dev/null +++ b/bun.lock @@ -0,0 +1,126 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "ghost_git_writer_bun", + "dependencies": { + "@google/genai": "^1.50.1", + "commander": "^14.0.3", + "openai": "^6.34.0", + "simple-git": "^3.36.0", + }, + "devDependencies": { + "@types/bun": "latest", + }, + "peerDependencies": { + "typescript": "^5", + }, + }, + }, + "packages": { + "@google/genai": ["@google/genai@1.50.1", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-YbkX7H9+1Pt8wOt7DDREy8XSoiL6fRDzZQRyaVBarFf8MR3zHGqVdvM4cLbDXqPhxqvegZShgfxb8kw9C7YhAQ=="], + + "@kwsites/file-exists": ["@kwsites/file-exists@1.1.1", "", { "dependencies": { "debug": "^4.1.1" } }, "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw=="], + + "@kwsites/promise-deferred": ["@kwsites/promise-deferred@1.1.1", "", {}, "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="], + + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], + + "@simple-git/args-pathspec": ["@simple-git/args-pathspec@1.0.3", "", {}, "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA=="], + + "@simple-git/argv-parser": ["@simple-git/argv-parser@1.1.1", "", { "dependencies": { "@simple-git/args-pathspec": "^1.0.3" } }, "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw=="], + + "@types/bun": ["@types/bun@1.3.13", "", { "dependencies": { "bun-types": "1.3.13" } }, "sha512-9fqXWk5YIHGGnUau9TEi+qdlTYDAnOj+xLCmSTwXfAIqXr2x4tytJb43E9uCvt09zJURKXwAtkoH4nLQfzeTXw=="], + + "@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="], + + "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], + + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + + "bun-types": ["bun-types@1.3.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA=="], + + "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], + + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], + + "gaxios": ["gaxios@7.1.4", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA=="], + + "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], + + "google-auth-library": ["google-auth-library@10.6.2", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.1.4", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "^4.0.0" } }, "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw=="], + + "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], + + "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], + + "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], + + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], + + "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + + "openai": ["openai@6.34.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw=="], + + "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], + + "protobufjs": ["protobufjs@7.5.5", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg=="], + + "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "simple-git": ["simple-git@3.36.0", "", { "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", "@simple-git/args-pathspec": "^1.0.3", "@simple-git/argv-parser": "^1.1.0", "debug": "^4.4.0" } }, "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="], + + "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + + "ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + } +} diff --git a/chglog.md b/chglog.md deleted file mode 100644 index a0ee44a..0000000 --- a/chglog.md +++ /dev/null @@ -1,124 +0,0 @@ -# change log - -## 0.14.1(Aug 29) (written by gemini 2.5 pro) - -### Key Modifications - -The most significant change is the introduction of **multi-language support**. A new global command-line option, `-l` or `--lang`, has been added to allow users to specify the output language for LLM-generated content. This feature required extensive refactoring across the application to pass the language parameter to all LLM prompt generation functions. - -Accompanying this feature is a major codebase refactoring: -* The `main` function is now `async`. -* Modules for generating commits, READMEs, and summaries have been restructured. -* The LLM calling logic has been centralized and improved to be more modular. -* Configuration handling was updated to support more advanced options, like custom base URLs for Ollama. -* The command-line interface (CLI) helpers were improved, replacing a manual spinner with the `indicatif` crate. - -### Added - -* **`.github/workflows/rust.yml`**: A `cargo check` step was added to the CI pipeline for faster error checking. -* **`src/cli_helper.rs`**: A new `Spinner` struct (using the `indicatif` crate) and a `Printer` struct (for formatted box output) were added. -* **`Cargo.toml`**: Dependencies for `indicatif`, `unicode-width`, and `url` were added to support the new UI and functionality. -* **`src/main.rs`**: - * A global `-l, --lang` CLI option was added to the `RootOptions` struct. - * Logic to handle the new `lang` parameter and pass it to LLM functions. -* **`.gitignore`**: The `src_old/` directory was added to the ignore list. - -### Removed - -Multiple files were deleted as part of a major code reorganization and cleanup. The functionality from these files was moved into new, refactored modules. - -* **Source Files Deleted:** - * `src/cmt_msg.rs` - * `src/custom_prompt.rs` - * `src/read_codes.rs` - * `src/readme.rs` - * `src/sum.rs` - * `src/storage.rs` (Functionality replaced by the `easy_storage` crate). -* **Project Files Deleted:** - * `a.diff`: A temporary diff file. - * `release/*.zip`: Old binary release artifacts. - * `resource/wwg_demo_0_2_1.gif`: An old demo GIF. - * `test_config.json`, `test_diff.txt`: Old test configuration and data files. - * `ulib_owl_release/`: Directory containing old, specific build scripts. -* **Dependencies Removed:** - * The `dialoguer` dependency was removed from `Cargo.toml`. - -### Modified - -* **`Cargo.toml` & `Cargo.lock`**: Project version was bumped to `0.14.1`. Dependency versions were updated, with many now using wildcard versions (e.g., `4.5.*`). -* **`README.md`**: Significantly rewritten to simplify usage instructions, remove outdated information, and document the new `--lang` option. -* **`src/config.rs`**: Configuration structs were refactored. The `Model` struct now includes a `base_url` field. The logic for resolving models from aliases or defaults has been updated. -* **`src/get_input.rs`**: Functions now return `Result` instead of panicking on I/O errors, improving robustness. -* **`src/git.rs`**: The `get_diff` function was enhanced to allow generating a diff between specific commit points, not just against the working directory. -* **`src/llm.rs`**: Heavily refactored. LLM calls are now managed through a new `LlmReqInfo` struct and a `Provider` enum, making the code more modular and extensible. Spinner logic is now integrated here. -* **`src/main.rs`**: This file saw the most changes, orchestrating the new multi-language feature and reflecting the overall code restructuring. Error handling was also completely revamped. -* **`auto_release.bash`**: The script was modified to clean the `release` directory before creating new zip files. - -## 0.9.1(Aug 15) - -- change priority of config path, - - primary: `~/.config/ggw/config.toml` - - secoundary: `~/.ggw.toml` -- improve `sum` prompt - - suppress summaries other than changes - -## 0.9.0 - -- config format change to toml from json - -## 0.8.0 - -- change additional prompt for `cmt`. `-c --cutom-prompt` -> `-e --extra`. -- remove `-d --default` option - -## 0.6.0 - -- feat: multi lang support - -## 0.5.0 - -- add feat: oneline mode that print only result e.g. generated commit message and summarize diff -- change option format, `ggw -m gemini/foo cmt` -> `ggw cmt -m gemini/foo` - -## 0.4.2 - -- feat: add custom prompt - -## 0.4.0 - -- feat: add feat to spin a spinner during llm processing - -## 0.3.6 - -Here's a breakdown of the changes in the provided Rust code diff: - -**Key Modifications:** - -- **Argument Handling in `Readme` struct:** - - The `source_path_list` field in the `Readme` struct was changed from `Vec` to `Option>` - - Added logic to handle the mutually exclusive arguments `source_path_list` and `dir` - -**Purpose and Impact:** - -- **Flexibility in Readme Creation:** - - * The change in `source_path_list` to be optional enables the user to specify either a list of source files or a directory for generating a README. Previously, only a list of source files was supported. - * The `dir` argument allows the program to read all files in a specified directory for README generation. - * The `required_unless_present` and `conflicts_with` arguments ensure that either `source_path_list` or `dir` must be provided, but not both. This improves the command-line interface by making the usage cl - - earer and preventing ambiguous configurations. - -- **Directory Traversal for Readme Generation:** - - The code now handles the case where a directory is provided as input for README generation. It reads all files within the directory and uses them as input for the README creation process. - - The error handling ensures that if neither `source_path_list` nor `dir` is provided, the program will return an error indicating that a file path is not set. - -## 0.3.2 - -### fix - -- fix bug; don't require `-s` in rdm subcommand. - -## 0.3.0 Jul 17 13:30 - -- now, abolish `--servie` option. integrated to format: `-m provider/model` -- now, abolish model format: `-s gemini -m gemini-2.0-flash` because 👆 diff --git a/config_template.toml b/config_template.toml deleted file mode 100644 index 036897e..0000000 --- a/config_template.toml +++ /dev/null @@ -1,7 +0,0 @@ -[llms.default_model] -provider = "gemini" -model = "gemini-2.0-flash" - -[llms.models.ge] -provider = "gemini" -model = "gemini-2.5-flash" diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 7cf0da6..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -ggw.uliboooo.dev \ No newline at end of file diff --git a/docs/icon.svg b/docs/icon.svg deleted file mode 100644 index 1c87506..0000000 --- a/docs/icon.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index aacb0ab..0000000 --- a/docs/index.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - Ghost Git Writer (ggw) - AI-Powered Git Assistant - - - - - - - - - - - -
-
- Rust製 高速AI Gitアシスタント -
- -

- AIにコミットを任せよう -

- -

- コミットメッセージ、README、Diffの要約をLLMが自動生成。
- Rust製のCLIツール ggw でGitワークフローを加速させましょう。 -

- - -
-
-
-
-
- user@dev:~/project -
-
-
- - ggw commit -
-
- LLM call...finished. -
-
-
- Generated msg:
- feat: Set up Emacs with configuration migrated from Neovim -
-
continue?(y/n)> y
-
-
-
- - -
-
-
-
- $ - cargo install ghost_git_writer - -
-
- - GitHubを見る - -
-
- - -
-
-

Supported LLM Providers

-
- Gemini - OpenAI - Anthropic - DeepSeek - Ollama (Local) -
-
-
- - -
-

Git作業を自動化する4つの機能

-
- -
-
- -
-

スマートなコミット生成

-

- 変更内容(diff)を解析し、Conventional Commits形式の適切なメッセージを提案します。日本語出力も対応。 -

-
- - -
-
- -
-

README 自動作成

-

- ソースコードを読み込み、プロジェクトの概要、インストール方法、使い方を含むREADME.mdを生成します。 -

-
- - -
-
- -
-

Diff サマリー

-

- 大量の差分を読むのは大変です。AIが変更点の要約を作成し、何が変わったのかを即座に把握できます。 -

-
- - -
-
- -
-

SemVer 推奨

-

- 変更内容に基づいて、セマンティックバージョニングのどのフィールド(Major/Minor/Patch)を上げるべきかアドバイスします。 -

-
-
-
- - -
-
-

Usage Examples

- -
- -
-

# 特定のモデルと日本語を指定してコミットメッセージを生成

-
- ggw commit -m gemini/gemini-2.0-flash -l japanese -
-
- - -
-

# パイプを使ってステージングされた変更を処理

-
- git diff --staged | ggw commit --stdin -
-
- - -
-

# 特定のコミットとの差分を要約

-
- ggw sumdiff -D 76fd1d0 -
-
-
-
-
- - -
-
- GitHub - License -
-

© 2025 Uliboooo. All rights reserved.

-

Made with Rust 🦀

-
- - - - - - \ No newline at end of file diff --git a/docs/log-ggw.png b/docs/log-ggw.png deleted file mode 100644 index 08025e79e5e5734cc493c8f50c50241e50f7d666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267454 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�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�~@ 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 diff --git a/icon.svg b/icon.svg deleted file mode 100644 index 1c87506..0000000 --- a/icon.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/package.json b/package.json new file mode 100644 index 0000000..b67734e --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "ghost_git_writer_bun", + "module": "index.ts", + "type": "module", + "private": true, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "@google/genai": "^1.50.1", + "commander": "^14.0.3", + "openai": "^6.34.0", + "simple-git": "^3.36.0" + } +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 0000000..3b5d2aa --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1,3 @@ +export function hello(name: string) { + return `hello ${name}`; +} diff --git a/reference/config.md b/reference/config.md deleted file mode 100644 index 9883e51..0000000 --- a/reference/config.md +++ /dev/null @@ -1,3 +0,0 @@ -# config - -## model diff --git a/reference/logic_map.md b/reference/logic_map.md deleted file mode 100644 index 7223d3b..0000000 --- a/reference/logic_map.md +++ /dev/null @@ -1,7 +0,0 @@ -# map - -- root - - main: parse cli args & io process - - llms: llm controller - - git: git controller - diff --git a/src/cli.rs b/src/cli.rs deleted file mode 100644 index 912ee3e..0000000 --- a/src/cli.rs +++ /dev/null @@ -1,288 +0,0 @@ -use crate::get_input::yes_no; -use clap::{self}; -use derive_getters::Getters; -use std::{fmt::Display, fs, path::PathBuf}; - -#[derive(Debug)] -pub enum Error { - Io(std::io::Error), - DoesNotExistSource, - NotFoundSrc, -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::Io(e) => write!(f, "io error: {}", e), - Error::DoesNotExistSource => write!(f, "No source specified."), - Error::NotFoundSrc => write!(f, "not dound src folder"), - } - } -} - -impl From for Error { - fn from(value: std::io::Error) -> Self { - Self::Io(value) - } -} - -#[derive(Debug, clap::Parser, Clone)] -#[command(name = "ggw", version, about = "generate git commit msg by llm")] -pub struct Cli { - #[command(subcommand)] - pub subcommand: Commands, -} - -impl RootOption for Cli { - fn get_root_options(&self) -> RootOptions { - self.subcommand.get_root_options() - } -} - -pub trait RootOption { - fn get_root_options(&self) -> RootOptions; -} - -#[derive(Debug, clap::Args, Clone, Getters)] -pub struct RootOptions { - #[arg( - short = 'm', - long = "model", - // conflicts_with = "alias", - help = "`-m gemini/gemino-2.0-flash` or `-m config's model name`" - )] - model: Option, - - #[arg(long = "temperature")] - temperature: Option, - - #[arg(long = "max-tokens")] - max_tokens: Option, - - #[arg(long = "base-url")] - base_url: Option, - - #[arg(short = 'p', long = "path", help = "work path. git project root path.")] - path: Option, - - #[arg(short = 'l', long = "lang", help = "language. `-l japanese`")] - lang: Option, - - #[arg( - short = 'e', - long = "extra", - help = "extra prompt. append to default prompt" - )] - extra: Option, - - #[arg(long = "config", help = "config file path")] - config_path: Option, - - #[arg(long = "oneline", help = "show only llm's return for cli pipes")] - oneline: bool, - - #[arg(long = "stdin", help = "use stdin as diff content")] - stdin: bool, -} - -pub trait DiffOption { - fn get_diff_options(&self) -> DiffOptions; - fn resolve_diff_commit(&self) -> (Option, Option) { - match self.get_diff_options().diff_commit { - Some(v) => { - let sp_v = v.split('/').collect::>(); - let ops_num = sp_v.len(); - if ops_num >= 2 { - (Some(sp_v[0].to_string()), Some(sp_v[1].to_string())) - } else if ops_num == 1 { - (Some(sp_v[0].to_string()), None) - } else { - (None, None) - } - } - None => (None, None), - } - } -} - -#[derive(Debug, clap::Args, Clone, Getters)] -pub struct DiffOptions { - #[arg(short = 'D', long = "diff", help = "diff points")] - diff_commit: Option, -} - -#[derive(Debug, clap::Subcommand, Clone)] -pub enum Commands { - #[command(name = "commit", about = "gen git commit msg")] - Commit(Commit), - - #[command(name = "readme", about = "gen README by codebase")] - Readme(Readme), - - #[command(name = "sumdiff", about = "summarize changes by git diff")] - SumDiff(SumDiff), - - #[command( - name = "which-sem", - about = "in Sem Ver, Output which field should be incremented." - )] - WhichSem(WhichSem), -} - -impl RootOption for Commands { - fn get_root_options(&self) -> RootOptions { - match self { - Commands::Commit(commit) => commit.get_root_options(), - Commands::Readme(readme) => readme.get_root_options(), - Commands::SumDiff(diff_sum) => diff_sum.get_root_options(), - Commands::WhichSem(which_sem) => which_sem.get_root_options(), - } - } -} - -#[derive(Debug, clap::Args, Clone, Getters)] -pub struct Commit { - #[command(flatten)] - root_options: RootOptions, - - #[command(flatten)] - diff_opts: DiffOptions, - - #[arg(long = "auto-commit", help = "allow auto git commit")] - auto_commit: bool, -} - -impl DiffOption for Commit { - fn get_diff_options(&self) -> DiffOptions { - self.diff_opts.clone() - } -} - -#[derive(Debug, clap::Args, Clone, Getters)] -pub struct Readme { - #[command(flatten)] - root_options: RootOptions, - - #[arg( - short = 's', - long = "sources", - help = "source files path list. e.g. `-s path1,path2,path3`" - )] - source_path: Option, - - #[arg(short = 'd', long = "directory", help = "source folder")] - source_dir: Option, - - #[arg(long = "merge-readme", help = "allow to merge to `./README.md`")] - allow_merge: bool, - // #[arg(long = "over-write", help = "allow to overwrite `./README.md`")] - // allow_over_write: bool, -} - -impl Readme { - pub fn export_path_list(&self) -> Result, Error> { - let mut list = Vec::new(); - if let Some(p) = &self.source_path { - let spd = p.split(',').collect::>(); - let res = spd.iter().map(PathBuf::from).collect::>(); - list.extend(res); - } - if let Some(l) = &self.source_dir { - let path = PathBuf::from(l); - let path_list = fs::read_dir(path)?; - for i in path_list { - let i = i?.path(); - list.push(i); - } - } - - if self.source_path.is_none() && self.source_dir.is_none() { - if yes_no("No source specified. Do you want to process the 'src/' directory? (y/n)") { - let src_path = { - let p = std::env::current_dir()?.join("src"); - if p.exists() { - p - } else { - return Err(Error::NotFoundSrc); - } - }; - let path_list = std::fs::read_dir(src_path)?; - let res = path_list - .filter_map(|f| f.ok()) - .map(|d| d.path()) - .collect::>(); - list.extend(res); - } else { - return Err(Error::DoesNotExistSource); - } - } - - Ok(list) - } -} - -#[derive(Debug, clap::Args, Clone, Getters)] -pub struct SumDiff { - #[command(flatten)] - root_options: RootOptions, - - #[command(flatten)] - diff_opts: DiffOptions, -} - -impl DiffOption for SumDiff { - fn get_diff_options(&self) -> DiffOptions { - self.diff_opts.clone() - } -} - -#[derive(Debug, clap::Args, Clone)] -struct Config { - #[command(flatten)] - root_options: RootOptions, - - #[arg(short = 'c', long = "check", help = "check config")] - check: bool, - - #[arg(short = 's', long = "show", help = "show current config")] - show: bool, -} - -#[derive(Debug, clap::Args, Clone)] -pub struct WhichSem { - #[command(flatten)] - root_options: RootOptions, - - #[command(flatten)] - diff_opts: DiffOptions, -} - -impl DiffOption for WhichSem { - fn get_diff_options(&self) -> DiffOptions { - self.diff_opts.clone() - } -} - -impl RootOption for Commit { - fn get_root_options(&self) -> RootOptions { - self.root_options.clone() - } -} - -impl RootOption for Readme { - fn get_root_options(&self) -> RootOptions { - self.root_options.clone() - } -} - -impl RootOption for SumDiff { - fn get_root_options(&self) -> RootOptions { - self.root_options.clone() - } -} - -impl RootOption for WhichSem { - fn get_root_options(&self) -> RootOptions { - self.root_options.clone() - } -} diff --git a/src/cli_helper.rs b/src/cli_helper.rs deleted file mode 100644 index e9e7f75..0000000 --- a/src/cli_helper.rs +++ /dev/null @@ -1,253 +0,0 @@ -use indicatif::{ProgressBar, ProgressStyle}; -use std::{fmt::Display, time::Duration}; -use unicode_width::UnicodeWidthChar; - -// pub enum Error { -// Io(std::io::Error), -// } -// -// impl Display for Error { -// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -// match self { -// Error::Io(e) => write!(f, "io error: {}", e), -// } -// } -// } -// -// impl From for Error { -// fn from(value: std::io::Error) -> Self { -// Self::Io(value) -// } -// } - -pub struct Spinner { - pb: ProgressBar, -} - -impl Spinner { - pub fn new(message: &str) -> Self { - let pb = ProgressBar::new_spinner(); - pb.enable_steady_tick(Duration::from_millis(120)); - pb.set_style( - ProgressStyle::default_spinner() - .tick_strings(&["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]) - .template("{spinner:.blue} {msg}") - .unwrap(), - ); - pb.set_message(message.to_string()); - Self { pb } - } - - pub fn stop(&self, message: &str) { - self.pb.finish_with_message(message.to_string()); - } -} - -#[derive(Debug)] -pub struct Printer { - content: String, -} - -impl Printer { - pub fn new>(content: T) -> Self { - Self { - content: content.as_ref().to_string(), - } - } -} - -impl From for Printer { - fn from(value: String) -> Self { - Self::new(value) - } -} - -impl From<&String> for Printer { - fn from(value: &String) -> Self { - Self::new(value) - } -} - -impl From<&str> for Printer { - fn from(value: &str) -> Self { - Self::new(value) - } -} - -impl Display for Printer { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let max_chars = get_max_len(&self.content); - let start_l = format!("╭{}╮", mul_str(&"─", max_chars + 2)); - let end_l = format!("╰{}╯", mul_str(&"─", max_chars + 2)); - - let mut res = String::new(); - res.push_str(&start_l); - for l in self.content.lines() { - let rem = max_chars - get_str_len(l); - let fill_space = mul_str(&" ", rem); - res.push_str(format!("\n│ {l}{fill_space} │").as_str()); - } - res.push_str(format!("\n{}", end_l.as_str()).as_str()); - - write!(f, "{res}") - } -} - -fn get_str_len>(strg: T) -> u32 { - let mut len = 0; - for c in strg.as_ref().chars() { - len += c.width().unwrap_or(0); - } - len as u32 -} - -fn mul_str>(msg: &T, mul: u32) -> String { - let mut res = String::new(); - for _ in 0..mul { - res.push_str(msg.as_ref()); - } - res -} - -fn get_max_len>(strg: T) -> u32 { - let mut max = 0; - for l in strg.as_ref().lines() { - let len = get_str_len(l); - if max < len { - max = len; - } - } - max -} - -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -pub enum SemVerPart { - Major, - Minor, - Patch, -} - -impl SemVerPart { - fn label(self) -> &'static str { - match self { - SemVerPart::Major => "MAJOR", - SemVerPart::Minor => "MINOR", - SemVerPart::Patch => "PATCH", - } - } -} - -impl std::str::FromStr for SemVerPart { - type Err = String; - - fn from_str(s: &str) -> Result { - match s.trim().to_lowercase().as_str() { - "major" => Ok(SemVerPart::Major), - "minor" => Ok(SemVerPart::Minor), - "patch" => Ok(SemVerPart::Patch), - other => Err(format!("unknown SemVer part: {other}")), - } - } -} - -pub struct SemVerSelector { - selected: SemVerPart, -} - -impl SemVerSelector { - pub fn new(selected: SemVerPart) -> Self { - Self { selected } - } -} - -impl Display for SemVerSelector { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let parts = [SemVerPart::Major, SemVerPart::Minor, SemVerPart::Patch]; - let mut top = String::new(); - let mut mid = String::new(); - let mut bot = String::new(); - - for (i, &part) in parts.iter().enumerate() { - let label = part.label(); - let w = get_str_len(label); - let is_sel = part == self.selected; - - // Add a column separator before this item (except for the first). - // Skip when one of the adjacent items is selected — the box wall serves as the separator. - if i > 0 && !(parts[i - 1] == self.selected) && !is_sel { - top.push(' '); - mid.push('│'); - bot.push(' '); - } - - if is_sel { - top.push_str(&format!("╭{}╮", mul_str(&"─", w + 2))); - mid.push_str(&format!("│ {label} │")); - bot.push_str(&format!("╰{}╯", mul_str(&"─", w + 2))); - } else { - top.push_str(&mul_str(&" ", w + 2)); - mid.push_str(&format!(" {label} ")); - bot.push_str(&mul_str(&" ", w + 2)); - } - } - - write!(f, "{top}\n{mid}\n{bot}") - } -} - -#[cfg(test)] -mod tests { - use crate::cli_helper::{Printer, SemVerPart, SemVerSelector, mul_str}; - - #[test] - fn str_mul_test() { - let c = "hi"; - let res = mul_str(&c, 10); - assert_eq!("hihihihihihihihihihi".to_string(), res); - } - - #[test] - fn print_test() { - let test_str = [ - ( - "line1\nline2line2line2\nline3line3", - "╭─────────────────╮\n│ line1 │\n│ line2line2line2 │\n│ line3line3 │\n╰─────────────────╯", - ), - ( - "line全角21\nli全角ne2line2line2\nline3line3", - "╭─────────────────────╮\n│ line全角21 │\n│ li全角ne2line2line2 │\n│ line3line3 │\n╰─────────────────────╯", - ), - ]; - - for r in test_str { - assert_eq!(format!("{}", Printer::new(r.0)), r.1.to_string()); - } - } - - #[test] - fn sem_ver_part_from_str_test() { - assert_eq!("major".parse::(), Ok(SemVerPart::Major)); - assert_eq!("Minor".parse::(), Ok(SemVerPart::Minor)); - assert_eq!("PATCH".parse::(), Ok(SemVerPart::Patch)); - assert!("unknown".parse::().is_err()); - } - - #[test] - fn sem_ver_selector_test() { - // MAJOR selected (first item) - assert_eq!( - format!("{}", SemVerSelector::new(SemVerPart::Major)), - "╭───────╮ \n│ MAJOR │ MINOR │ PATCH \n╰───────╯ " - ); - // MINOR selected (middle item) - assert_eq!( - format!("{}", SemVerSelector::new(SemVerPart::Minor)), - " ╭───────╮ \n MAJOR │ MINOR │ PATCH \n ╰───────╯ " - ); - // PATCH selected (last item) - assert_eq!( - format!("{}", SemVerSelector::new(SemVerPart::Patch)), - " ╭───────╮\n MAJOR │ MINOR │ PATCH │\n ╰───────╯" - ); - } -} diff --git a/src/commit_gen.rs b/src/commit_gen.rs deleted file mode 100644 index 2eb6c30..0000000 --- a/src/commit_gen.rs +++ /dev/null @@ -1,50 +0,0 @@ -// use std::fmt::Display; - -use crate::llm; - -// #[derive(Debug)] -// pub enum Error { -// Llm(llm::Error), -// } - -// impl Display for Error { -// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -// match self { -// Error::Llm(e) => write!(f, "llm error: {}", e), -// } -// } -// } -// -// impl From for Error { -// fn from(value: llm::Error) -> Self { -// Self::Llm(value) -// } -// } - -const GEN_MSG_PMT: &str = "You are an assistant that writes Git commit messages.\ -When code changes include modifications to documentation files (e.g., README.md, docs/), ignore those changes and generate the commit message based solely on source code changes.\ -Given a description of code changes, output only a single-line commit message in Conventional Commits format (e.g., \"feat:\", \"fix:\", \"docs:\", etc.).\ -Do not include any extra text, code blocks, or formatting. Only output the commit message.\ -git status info and diff changes:"; - -pub async fn gen_commit_msg>( - diff: T, - status: T, - model: llm::LlmReqInfo, - lang: Option<&T>, - extra: Option<&T>, -) -> Result { - let diff = diff.as_ref(); - let st = status.as_ref(); - let lang = lang - .map(|f| f.as_ref().to_string()) - .unwrap_or("english".to_string()); - let extra = format!( - " # Additional Instructions: {}", - extra.map_or("".to_string(), |f| f.as_ref().to_string()) - ); - - let prompt = format!("Please in {lang}.\n{GEN_MSG_PMT}\nstauts: {st}\ndiff:{diff}.\n{extra}"); - - llm::call_llm(model, prompt).await -} diff --git a/src/config.rs b/src/config.rs deleted file mode 100644 index 2ea786f..0000000 --- a/src/config.rs +++ /dev/null @@ -1,177 +0,0 @@ -use std::fmt::Display; - -use derive_getters::Getters; -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; -use url::Url; - -#[derive(Debug, PartialEq)] -pub enum Error { - Url(url::ParseError), - NotFoundPort, - NotFoundHost, -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::Url(parse_error) => write!(f, "failed parse url {parse_error}"), - Error::NotFoundPort => write!(f, "not found port in base_url"), - Error::NotFoundHost => write!(f, "not found host (exmaple.com)"), - } - } -} - -impl From for Error { - fn from(value: url::ParseError) -> Self { - Self::Url(value) - } -} - -#[derive(Debug, Getters, Serialize, Deserialize)] -pub struct Config { - llms: Option, -} - -impl easy_storage::Storeable for Config {} - -#[derive(Debug, Getters, Serialize, Deserialize, Clone)] -pub struct Llm { - default_model: Option, - models: Option>, - ollama: Option, -} - -impl Llm { - pub fn get_default(&self) -> Option { - self.default_model.clone() - } - - pub fn get_model>(&self, name: T) -> Option { - let res = match &self.models { - Some(v) => Some(v.get(&name.as_ref().to_string())), - None => None, - } - .flatten(); - res.cloned() - } -} - -#[derive(Debug, Getters, Serialize, Deserialize, Clone)] -pub struct Model { - provider: String, - model: String, - temperature: Option, - max_tokens: Option, - base_url: Option, -} - -impl Model { - pub fn new>( - provider: T, - model: T, - temperature: Option, - max_tokens: Option, - base_url: Option, - ) -> Self { - Self { - provider: provider.as_ref().to_string(), - model: model.as_ref().to_string(), - temperature, - max_tokens, - base_url, - } - } - - pub fn resolve_base_url(&self) -> Result, Error> { - // let url = match &self.base_url { - // Some(v) => v, - // None => return Ok(None), - // }; - // let parsed_url = Url::parse(url)?; - // let port = parsed_url.port().unwrap(); - // let sh = parsed_url.scheme(); - // let host = parsed_url.host_str().unwrap(); - // let url = format!("{sh}://{host}{}", parsed_url.path()); - // Ok(Some((url, port))) - self.base_url.as_ref().map(parse_port).transpose() - } -} - -fn parse_port>(url: T) -> Result<(String, u16), Error> { - let parsed_url = Url::parse(url.as_ref())?; - let port = parsed_url.port().ok_or(Error::NotFoundPort)?; - let sh = parsed_url.scheme(); - let host = parsed_url.host_str().ok_or(Error::NotFoundHost)?; - let url = format!("{sh}://{host}{}", parsed_url.path()); - Ok((url, port)) -} - -#[derive(Debug, Getters, Serialize, Deserialize, Clone)] -pub struct OllamaConfig { - base_url: Option, -} - -impl Default for OllamaConfig { - fn default() -> Self { - Self { - base_url: Some(String::from("http://localhost:11434")), - } - } -} - -#[cfg(test)] -mod tests { - use std::collections::HashMap; - - use easy_storage::Storeable; - - use crate::config::{self, Error, Model, parse_port}; - - #[test] - fn save_config() { - let def = Model::new("gemini", "gemini-2.0-flash", None, None, None); - let mut models = HashMap::new(); - models.insert( - "ge".to_string(), - Model::new("gemini", "gemini-2.5-flash", None, None, None), - ); - - let config = config::Config { - llms: Some(config::Llm { - default_model: Some(def), - models: Some(models), - ollama: None, - }), - }; - let c = std::env::current_dir() - .unwrap() - .join("config_template") - .with_extension("toml"); - config.save_by_extension(c, true).unwrap(); - } - - #[test] - fn parsed_url_test() { - let test_urls = [ - ( - "http://localhost:11434", - Ok(("http://localhost/".to_string(), 11434)), - ), - ( - "http://foo.com:11434/bar", - Ok(("http://foo.com/bar".to_string(), 11434)), - ), - ("foo.com:11434/bar", Err(Error::NotFoundPort)), - ( - "foo.com/bar", - Err(Error::Url(url::ParseError::RelativeUrlWithoutBase)), - ), - ]; - - for u in test_urls { - let parsed = parse_port(u.0); - assert_eq!(parsed, u.1); - } - } -} diff --git a/src/diff_sum_gen.rs b/src/diff_sum_gen.rs deleted file mode 100644 index 1cd6e0b..0000000 --- a/src/diff_sum_gen.rs +++ /dev/null @@ -1,22 +0,0 @@ -use crate::{helper, llm}; - -const DEFAULT_PROMPT: &str = "summarize the git diff changes. -List the key modifications, what was added, removed, or modified, and briefly explain their purpose or impact if possible. -about only changes. must not write about project. you don't readme writer, you summarize diff changes."; - -pub async fn sum_diff>( - diff: T, - status: T, - model: llm::LlmReqInfo, - lang: Option, - extra: Option, -) -> Result { - let lang = helper::init_lang(lang); - let st = status.as_ref(); - let extra = helper::init_extra(extra); - let diff = diff.as_ref(); - let prompt = - format!("Please in {lang}.\n{DEFAULT_PROMPT}\nstatus: {st}\ndiff: {diff}.\n{extra}"); - - llm::call_llm(model, prompt).await -} diff --git a/src/get_input.rs b/src/get_input.rs deleted file mode 100644 index 3f0d635..0000000 --- a/src/get_input.rs +++ /dev/null @@ -1,35 +0,0 @@ -use std::io::{self, Write, stdout}; - -/// get user's input. return String. -/// -/// ## how to get input without message. -/// ``` -/// let input = get_input(""); -/// ``` -/// -/// ## how to get input with message. -/// ``` -/// let input = get_input("please title>"); -/// ``` -/// -/// ```bash -/// // 👇console -/// please title>foo 👈foo is user's input. -/// // input == "foo" -/// ``` -pub fn get_input>(message: S) -> Result { - print!("{}", message.as_ref()); - stdout().flush()?; - let mut word = String::new(); - std::io::stdin().read_line(&mut word)?; - Ok(word.trim().to_string()) -} - -/// if user's input is "y" or "yes", return true. -pub fn yes_no>(message: S) -> bool { - let input = match get_input(message.as_ref()) { - Ok(v) => v, - Err(_) => return false, - }; - input.is_empty() || matches!(input.as_ref(), "y" | "yes") -} diff --git a/src/git.rs b/src/git.rs deleted file mode 100644 index 436dfd9..0000000 --- a/src/git.rs +++ /dev/null @@ -1,133 +0,0 @@ -use std::path::Path; - -use git2::{DiffOptions, IndexAddOption, Repository, Signature}; - -// #[derive(Debug)] -// pub enum Error { -// Git(git2::Error), -// } -// -// impl Display for Error { -// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -// match self { -// Error::Git(e) => write!(f, "git error: {}", e), -// } -// } -// } -// -// impl From for Error { -// fn from(value: git2::Error) -> Self { -// Self::Git(value) -// } -// } - -pub fn get_diff, P: AsRef>( - points: (Option, Option), - path: P, -) -> Result { - let repo = Repository::open(path)?; - - let points = ( - points.0.map(|f| f.as_ref().to_string()), - points.1.map(|f| f.as_ref().to_string()), - ); - - let diff = match points { - (None, None) => repo.diff_index_to_workdir(None, Some(&mut DiffOptions::new())), - (None, Some(c2)) => { - let com1 = repo.find_commit(repo.revparse_single(c2.as_str())?.id())?; - let tree = com1.tree()?; - repo.diff_tree_to_workdir(Some(&tree), Some(&mut DiffOptions::new())) - } - (Some(c1), None) => { - let com1 = repo.find_commit(repo.revparse_single(c1.as_str())?.id())?; - let tree = com1.tree()?; - repo.diff_tree_to_workdir(Some(&tree), Some(&mut DiffOptions::new())) - } - (Some(c1), Some(c2)) => { - let com1 = repo.find_commit(repo.revparse_single(c1.as_str())?.id())?; - let com2 = repo.find_commit(repo.revparse_single(c2.as_str())?.id())?; - - let tree1 = com1.tree()?; - let tree2 = com2.tree()?; - repo.diff_tree_to_tree(Some(&tree1), Some(&tree2), Some(&mut DiffOptions::new())) - } - }?; - - let mut pa = String::new(); - diff.print(git2::DiffFormat::Patch, |_, _, line| { - if let Ok(t) = std::str::from_utf8(line.content()) { - pa.push_str(t); - } - true - })?; - Ok(pa) -} - -pub fn git_commit, M: AsRef, T: AsRef>( - path: P, - msg: &M, - name: T, - email: T, -) -> Result<(), git2::Error> { - let repo = Repository::open(path)?; - let mut index = repo.index()?; - index.add_all(["*"].iter(), IndexAddOption::CHECK_PATHSPEC, None)?; - index.write()?; - - let tree_id = index.write_tree()?; - let tree = repo.find_tree(tree_id)?; - - let parent_commit = repo - .head() - .ok() - .and_then(|h| h.resolve().ok()) - .and_then(|r| r.peel_to_commit().ok()); - - let sig = Signature::now(name.as_ref(), email.as_ref())?; - - let _commit_id = if let Some(pa) = parent_commit { - repo.commit(Some("HEAD"), &sig, &sig, msg.as_ref(), &tree, &[&pa])? - } else { - // first commit - repo.commit(Some("HEAD"), &sig, &sig, msg.as_ref(), &tree, &[])? - }; - - Ok(()) -} - -pub fn get_user_email() -> Result<(String, String), git2::Error> { - let config = git2::Config::open_default()?; - - Ok(( - config.get_string("user.name")?, - config.get_string("user.email")?, - )) -} - -pub fn get_git_status>(path: T) -> Result { - let repo = Repository::open(path)?; - - let st = repo.statuses(Some(&mut git2::StatusOptions::default()))?; - - Ok(st - .into_iter() - .map(|f| { - let s = f.status(); - let p = f.path().unwrap_or("???").to_string(); - format!("{s:?}: {p}\n") - }) - .collect::()) -} - -#[cfg(test)] -mod tests { - use crate::git::get_git_status; - - #[test] - fn sts_test() { - let c = std::env::current_dir().unwrap(); - let res = get_git_status(c).unwrap(); - println!("{res}"); - } -} diff --git a/src/helper.rs b/src/helper.rs deleted file mode 100644 index c46ec40..0000000 --- a/src/helper.rs +++ /dev/null @@ -1,69 +0,0 @@ -use std::{ - fs, io, - path::{Path, PathBuf}, -}; - -// #[derive(Debug)] -// pub enum Error { -// Io(std::io::Error), -// } -// -// impl Display for Error { -// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -// match self { -// Error::Io(e) => write!(f, "io error: {}", e), -// } -// } -// } -// -// impl From for Error { -// fn from(value: std::io::Error) -> Self { -// Self::Io(value) -// } -// } - -pub fn init_lang>(lang: Option) -> String { - lang.map(|f| f.as_ref().to_string()) - .unwrap_or("english".to_string()) -} - -pub fn init_extra>(extra: Option) -> String { - format!( - " # Additional Instructions: {}", - extra - .map(|f| f.as_ref().to_string()) - .unwrap_or("".to_string()) - ) -} - -pub fn load_codebase>(path_list: &Vec

) -> Result { - let mut file_contes = Vec::new(); - - for f in path_list { - let p = f.as_ref(); - if p.exists() - && let Ok(s) = fs::read_to_string(p) - { - file_contes.push(format!("path: {}\n\n{s}", f.as_ref().to_string_lossy())); - } - } - - Ok(file_contes.into_iter().collect::()) -} - -pub fn find_readme>(work_path: T) -> Option { - fs::read_dir(work_path) - .ok()? - .filter_map(|et| et.ok()) - .find_map(|et| { - et.path() - .file_name() - .and_then(|n| n.to_str()) - .filter(|s| s.eq_ignore_ascii_case("readme.md")) - .map(|_| et.path()) - }) -} - -pub fn get_now() -> String { - chrono::Local::now().format("%b-%d-%H-%M").to_string() -} diff --git a/src/llm.rs b/src/llm.rs deleted file mode 100644 index 9f432f2..0000000 --- a/src/llm.rs +++ /dev/null @@ -1,293 +0,0 @@ -use crate::cli_helper::Spinner; -use crate::config; -use derive_getters::Getters; -use llm_api_rs::{ - LlmProvider, - core::{ChatCompletionRequest, ChatMessage}, - providers::{Anthropic, DeepSeek, OpenAI}, -}; -use ollama_rs::{Ollama, generation::completion::request::GenerationRequest}; -use reqwest::header::CONTENT_TYPE; -use serde_json::json; -use std::fmt::Display; - -#[derive(Debug)] -pub enum Error { - NotSuppoeredProvider, - FailedGetAPIKey, - FailedGetBaseURL, - ChatCompletion(String), - // CliHelper(String), - OllamaE(ollama_rs::error::OllamaError), - Conf(config::Error), - InvalidResponse, - ApiErr(reqwest::Error), -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::NotSuppoeredProvider => write!(f, "not supported provider"), - Error::FailedGetAPIKey => write!(f, "failed to get api key"), - Error::FailedGetBaseURL => write!(f, "failed to get base url"), - Error::ChatCompletion(e) => write!(f, "chat completion error: {}", e), - Error::OllamaE(e) => write!(f, "ollama error: {}", e), - Error::Conf(e) => write!(f, "config error {e}"), - Error::InvalidResponse => write!(f, "invalid response"), - Error::ApiErr(e) => write!(f, "api error: {e}"), - } - } -} - -impl From for Error { - fn from(value: ollama_rs::error::OllamaError) -> Self { - Self::OllamaE(value) - } -} - -impl From for Error { - fn from(value: config::Error) -> Self { - Self::Conf(value) - } -} - -#[derive(Debug, PartialEq, PartialOrd, Clone)] -pub enum Provider { - Ollama, - OpenAI, - Gemini, - Anthropic, - DeepSeek, -} - -impl TryFrom<&str> for Provider { - type Error = Error; - - fn try_from(value: &str) -> Result { - match value.to_lowercase().as_str() { - "ollama" => Ok(Self::Ollama), - "openai" => Ok(Self::OpenAI), - "gemini" => Ok(Self::Gemini), - "anthropic" => Ok(Self::Anthropic), - "deepseek" => Ok(Self::DeepSeek), - _ => Err(Error::NotSuppoeredProvider), - } - } -} - -impl Provider { - fn is>(&self, prov: T) -> Result { - let p = Provider::try_from(prov.as_ref())?; - Ok(self == &p) - } -} - -#[derive(Debug, Getters, Clone)] -pub struct LlmReqInfo { - provider: Provider, - model: String, - api_key: Option, - temp: Option, - max_tokens: Option, - base_url: Option<(String, u16)>, -} - -impl LlmReqInfo { - pub fn resolve_api_key(&self) -> Result { - Ok(match self.api_key.clone() { - Some(key) => key, - None => { - if self.provider().is("ollama")? { - return Err(Error::FailedGetAPIKey); - } else { - String::new() - } - } - }) - } - - pub fn new( - provider: Provider, - model: String, - api_key: Option, - temp: Option, - max_tokens: Option, - base_url: Option<(String, u16)>, - ) -> Self { - Self { - provider, - model, - api_key, - temp, - max_tokens, - base_url, - } - } - - pub fn new_with_api(model: config::Model, api_key: Option) -> Result { - let prov = Provider::try_from(model.provider().as_str())?; - let base = model.resolve_base_url()?; - Ok(Self::new( - prov, - model.model().clone(), - api_key, - *model.temperature(), - *model.max_tokens(), - base, - )) - } -} - -fn make_gemini_body(model: String, prompt: String) -> serde_json::Value { - json!({ - "model": model, - "contents": [{ - "parts": [ - { - "text": prompt - } - ] - }] - }) -} - -// { -// "candidates": [ -// { -// "content": { -// "parts": [ -// { -// "text": "text", -// "thoughtSignature": "" -// } -// ], -// "role": "model" -// }, -// "finishReason": "STOP", -// "index": 0 -// } -// ], -// "usageMetadata": { -// "promptTokenCount": 11853, -// "candidatesTokenCount": 415, -// "totalTokenCount": 12986, -// "promptTokensDetails": [ -// { -// "modality": "TEXT", -// "tokenCount": 11853 -// } -// ], -// "thoughtsTokenCount": 718 -// }, -// "modelVersion": "gemini-3-flash-preview", -// "responseId": "96TLaaPKOKnY2roPx9DxCQ" -// } - -use serde::{Deserialize, Serialize}; - -// Discard any content other than text. -#[derive(Debug, Serialize, Deserialize)] -pub struct GeminiResp { - pub candidates: Vec, -} - -impl GeminiResp { - fn get_resp_text(&self) -> Option { - self.candidates - .first() - .and_then(|f| f.content.parts.first().map(|f| f.text.to_string())) - } -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Candidate { - pub content: Content, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Content { - pub parts: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Part { - pub text: String, -} - -pub async fn call_llm>(llm_info: LlmReqInfo, prompt: T) -> Result { - let spinner = Spinner::new("Calling LLM..."); - let api = llm_info.resolve_api_key()?; - let res = match llm_info.provider { - Provider::Ollama => { - let base_url = llm_info.clone().base_url.ok_or(Error::FailedGetBaseURL)?; - let o_res = Ollama::new(base_url.0, base_url.1); - let res = o_res - .generate(GenerationRequest::new( - llm_info.clone().model, - prompt.as_ref(), - )) - .await; - match res { - Ok(v) => Ok(v.response.to_string()), - Err(e) => Err(Error::OllamaE(e)), - } - } - Provider::Gemini => { - let client = reqwest::Client::new(); - - // let url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent".to_string(); - let url = format!( - "https://generativelanguage.googleapis.com/v1beta/models/{}:generateContent", - llm_info.model - ); - let body = make_gemini_body(llm_info.model, prompt.as_ref().to_string()); - - let resp = client - .post(url) - .header("x-goog-api-key", api) - .header(CONTENT_TYPE, "application/json") - .json(&body) - .send() - .await - .map_err(Error::ApiErr)? - // .unwrap() - .json::() - .await - .map_err(Error::ApiErr)?; - - resp.get_resp_text().ok_or(Error::InvalidResponse) - } - _ => { - let client: Box = match llm_info.provider { - Provider::OpenAI => Box::new(OpenAI::new(api)), - Provider::Anthropic => Box::new(Anthropic::new(api)), - Provider::DeepSeek => Box::new(DeepSeek::new(api)), - _ => return Err(Error::NotSuppoeredProvider), - }; - - let request = ChatCompletionRequest { - model: llm_info.model().clone(), - messages: vec![ChatMessage { - role: "user".to_string(), - content: prompt.as_ref().to_string(), - }], - temperature: *llm_info.temp(), - max_tokens: *llm_info.max_tokens(), - }; - - match client.chat_completion(request).await { - Ok(response) => { - if let Some(choice) = response.choices.first() { - Ok(choice.message.content.clone()) - } else { - Ok(String::new()) - } - } - Err(e) => Err(Error::ChatCompletion(e.to_string())), - } - } - }; - let result = async { res }.await; - spinner.stop("LLM call finished."); - result -} diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index ed1a58a..0000000 --- a/src/main.rs +++ /dev/null @@ -1,436 +0,0 @@ -mod cli; -mod cli_helper; -mod commit_gen; -mod config; -mod diff_sum_gen; -mod get_input; -mod git; -mod helper; -mod llm; -mod readme_gen; -mod which_sem; - -use crate::{ - cli::{DiffOption, RootOption}, - config::Config, - get_input::yes_no, - git::get_git_status, - helper::{find_readme, get_now}, -}; -use clap::Parser; -use easy_storage::Storeable; -use std::{ - env, - fmt::Display, - fs::{File, OpenOptions}, - io::{BufRead, BufReader, Read, Write, stdout}, - path::{Path, PathBuf}, -}; - -const ANTHROPIC_API: &str = "GGW_ANTHROPIC_API"; -const GEMINI_API: &str = "GGW_GEMINI_API"; -const GEMINI_API_FALL: &str = "GEMINI_API_KEY"; -const OPENAI_API: &str = "GGW_OPENAI_API"; -const DEEPSEEK: &str = "GGW_DEEPSEEK_API"; - -#[derive(Debug)] -enum Error { - Io(std::io::Error), - Store(easy_storage::Error), - Llm(llm::Error), - Config(config::Error), - Cli(cli::Error), - Git(git2::Error), - // Cmt(commit_gen::Error), - Rdm(readme_gen::Error), - EnvVar, - NotFoundHome, - NotFoundConfig(String), - NotFoundLlmField, - NotFoundSelectedModel, - NotFoundDefaultModel, - NotFoundWorkFolder, - Cancel, - InvalidSemVer(String), -} - -impl From for Error { - fn from(value: std::io::Error) -> Self { - Self::Io(value) - } -} - -impl From for Error { - fn from(value: easy_storage::Error) -> Self { - Self::Store(value) - } -} - -impl From for Error { - fn from(value: config::Error) -> Self { - Self::Config(value) - } -} - -impl From for Error { - fn from(value: cli::Error) -> Self { - Self::Cli(value) - } -} - -impl From for Error { - fn from(value: git2::Error) -> Self { - Self::Git(value) - } -} - -// impl From for Error { -// fn from(value: commit_gen::Error) -> Self { -// Self::Cmt(value) -// } -// } - -impl From for Error { - fn from(value: readme_gen::Error) -> Self { - Self::Rdm(value) - } -} - -impl From for Error { - fn from(value: llm::Error) -> Self { - Self::Llm(value) - } -} - -impl From for Error { - fn from(_value: env::VarError) -> Self { - Self::EnvVar - } -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::Io(error) => write!(f, "io error: {error}"), - Error::Store(error) => write!(f, "save error: {error}"), - Error::Llm(error) => write!(f, "llm error: {error}"), - Error::Config(error) => write!(f, "config error: {error}"), - Error::Cli(error) => write!(f, "cli error: {error}"), - Error::Git(error) => write!(f, "git error: {error}"), - // Error::Cmt(error) => write!(f, "commit gen error: {error}"), - Error::Rdm(error) => write!(f, "readme gen error: {error}"), - Error::NotFoundHome => write!( - f, - "not found home directory. Please ensure the HOME environment variable is set." - ), - Error::NotFoundConfig(ctx) => write!(f, "not found config file. {ctx}"), - Error::NotFoundWorkFolder => write!( - f, - "not found work folder. Please verify the path passed with --path exists." - ), - Error::Cancel => write!(f, "commit canceled"), - Error::EnvVar => write!( - f, - "failed to get API key from environment variable. Please set the appropriate variable (e.g. GGW_GEMINI_API, GGW_OPENAI_API, GGW_ANTHROPIC_API, or GGW_DEEPSEEK_API)." - ), - Error::NotFoundLlmField => write!( - f, - "not found 'llms' field in config file. Please add an [llms] section to your config. See the config template for reference." - ), - Error::NotFoundSelectedModel => write!( - f, - "not found selected model alias in config. Please verify the alias exists under [llms.models] in your config file." - ), - Error::NotFoundDefaultModel => write!( - f, - "not found default model in config. Please set 'default_model' under the [llms] section of your config file." - ), - Error::InvalidSemVer(s) => write!(f, "invalid SemVer part from LLM response: {s}"), - } - } -} - -/// Resolves the configuration file path. -/// -/// If a path is provided, returns it. Otherwise, searches for config files in standard locations: -/// 1. `~/.config/ggw/config.toml` -/// 2. `~/.ggw.toml` -/// -/// # Arguments -/// * `path` - Optional config file path -/// -/// # Errors -/// Returns `Error::NotFoundHome` if home directory cannot be determined. -/// Returns `Error::NotFoundConfig` if no config file is found in standard locations. -fn resolve_config_path>(path: &Option) -> Result { - let home_path = home::home_dir().ok_or(Error::NotFoundHome)?; - - if let Some(p) = path { - return Ok(p.as_ref().to_path_buf()); - } - - let primary = home_path - .join(".config") - .join("ggw") - .join("config") - .with_extension("toml"); - let secondary = home_path.join(".ggw").with_extension("toml"); - - if primary.exists() { - Ok(primary) - } else if secondary.exists() { - Ok(secondary) - } else { - Err(Error::NotFoundConfig(format!( - "Searched at '{}' and '{}'. \ - Please create a config file at one of those locations. \ - You can use the bundled config_template.toml as a starting point.", - primary.display(), - secondary.display() - ))) - } -} - -fn resolve_work_path(opt: &T) -> Result { - let p = match opt.get_root_options().path() { - Some(p) => PathBuf::from(p), - None => env::current_dir()?, - }; - - if !p.exists() { - Err(Error::NotFoundWorkFolder) - } else { - Ok(p) - } -} - -/// * `gemini/gemini-2.0-flash` -> (gemini, gemini-2.0-flash) -/// * `g2f` -> `(gemini, gemini-2.0-flash)` (if an alias is registered) -/// * `` -> default in config -fn resolve_model( - config: &Option, - root_opts: &cli::RootOptions, -) -> Result { - match root_opts.model() { - Some(v) => match v.split_once('/') { - // `-m gemini/gemini-2.0-flash` - Some(vv) => Ok(config::Model::new( - vv.0, - vv.1, - *root_opts.temperature(), - *root_opts.max_tokens(), - root_opts.base_url().clone(), - )), - // `-m gem2` - None => match config { - Some(loaded_config) => loaded_config.llms().clone().ok_or(Error::NotFoundLlmField), - None => Err(Error::NotFoundConfig( - "A config file is required to resolve model aliases. \ - Please create ~/.config/ggw/config.toml, or pass the model as \ - 'provider/model' (e.g. `-m gemini/gemini-2.0-flash`)." - .to_string(), - )), - }? - .get_model(v) - .ok_or(Error::NotFoundSelectedModel), - }, - // without mode arg - None => match config { - Some(v) => v.llms().clone().ok_or(Error::NotFoundLlmField), - None => Err(Error::NotFoundConfig( - "No config file found and no model specified. \ - Please create ~/.config/ggw/config.toml with a default_model, \ - or specify a model with `-m provider/model` (e.g. `-m gemini/gemini-2.0-flash`)." - .to_string(), - )), - }? - .get_default() - .ok_or(Error::NotFoundDefaultModel), - } -} - -fn resolve_api_key(model: &config::Model) -> Result, Error> { - let prov = llm::Provider::try_from(model.provider().as_str())?; - Ok(match prov { - llm::Provider::Ollama => None, - llm::Provider::OpenAI => Some(env::var(OPENAI_API)), - llm::Provider::Gemini => Some(match env::var(GEMINI_API) { - Ok(v) => Ok(v), - Err(_) => match env::var(GEMINI_API_FALL) { - Ok(vv) => Ok(vv), - Err(e) => Err(e), - }, - }), - llm::Provider::Anthropic => Some(env::var(ANTHROPIC_API)), - llm::Provider::DeepSeek => Some(env::var(DEEPSEEK)), - } - .transpose()?) -} - -#[tokio::main] -async fn main() -> Result<(), Error> { - let cli = cli::Cli::parse(); - - let config_path = resolve_config_path(cli.get_root_options().config_path()).ok(); - let loaded_config = config_path - .map(config::Config::load_by_extension) - .transpose() - .ok() - .flatten(); - - let work_path = resolve_work_path(&cli)?; - - let model = resolve_model(&loaded_config, &cli.get_root_options())?; - let api_key = resolve_api_key(&model)?; - - let model_info = llm::LlmReqInfo::new_with_api(model, api_key)?; - - //let diff = git::get_diff((None, None), &work_path)?; - - let git_user = git::get_user_email()?; - - let root_options = cli.get_root_options(); - let lang = root_options.lang().as_ref(); - let extra = root_options.extra().as_ref(); - - let git_status = get_git_status(&work_path)?; - // - // let diff = if root_options.stdin() { - // todo!() - // } else { - // } - - match &cli.subcommand { - cli::Commands::Commit(commit) => { - // 👇 is from pipe. - let diff = if !atty::is(atty::Stream::Stdin) && *root_options.stdin() { - let mut input = String::new(); - std::io::stdin().lock().read_to_string(&mut input)?; - stdout().flush()?; - input - } else { - let diff_opt = commit.resolve_diff_commit(); - git::get_diff(diff_opt, &work_path)? - }; - - let msg = commit_gen::gen_commit_msg(diff, git_status, model_info, lang, extra).await?; - let conti = || { - let mut tty = BufReader::new(File::open("/dev/tty").unwrap()); - stdout().flush().unwrap(); - // let mut ans = String::new(); - // tty.read_line(&mut ans).unwrap(); - print!("continue?(y/n)> "); - std::io::stdout().flush().unwrap(); - let mut ans = String::new(); - tty.read_line(&mut ans).unwrap(); - - matches!(ans.trim(), "y" | "Y" | "Yes" | "yes") - }; - if *commit.get_root_options().oneline() { - println!("{msg}"); - Ok(()) - } else { - let fd_msg = cli_helper::Printer::from(&msg); - println!("Generated msg:\n{fd_msg}"); - - if *commit.auto_commit() || - //yes_no("commit?(y/n)") - conti() - { - git::git_commit(&work_path, &msg, git_user.0, git_user.1)?; - Ok(()) - } else { - Err(Error::Cancel) - } - } - } - cli::Commands::Readme(readme) => { - let path_list = readme.export_path_list()?; - let readme_content = - readme_gen::gen_readme(&path_list, model_info, lang, extra).await?; - if *readme.get_root_options().oneline() { - println!("{readme_content}"); - Ok(()) - } else { - println!("Generated README:\n{readme_content}\n\n"); - let readme_file = find_readme(&work_path); - let mut f = if let Some(v) = readme_file { - if *readme.allow_merge() || yes_no("merge to README.md? (y/n)") { - OpenOptions::new().append(true).open(v)? - } else { - let now = get_now(); - let path = work_path.join(format!("{}.md", now)); - if yes_no("save to {now}.md?(y/n)") { - OpenOptions::new() - .write(true) - .create(true) - .truncate(true) - .open(path)? - } else { - return Err(Error::Cancel); - } - } - } else { - let path = work_path.join(format!("{}.md", get_now())); - OpenOptions::new() - .write(true) - .create(true) - .truncate(true) - .open(path)? - }; - Ok(f.write_all(readme_content.as_bytes())?) - } - } - cli::Commands::SumDiff(diff_sum) => { - let diff = if *root_options.stdin() { - let mut input = String::new(); - std::io::stdin().read_to_string(&mut input)?; - input - } else { - let diff_s = diff_sum.resolve_diff_commit(); - git::get_diff(diff_s, &work_path)? - }; - - let res = - diff_sum_gen::sum_diff(diff, git_status, model_info, lang.cloned(), extra.cloned()) - .await?; - if *diff_sum.get_root_options().oneline() { - println!("{res}"); - Ok(()) - } else { - println!("diff summarize:\n{res}"); - Ok(()) - } - } - cli::Commands::WhichSem(which) => { - let diff = if *root_options.stdin() { - let mut input = String::new(); - std::io::stdin().read_to_string(&mut input)?; - input - } else { - let diff_s = which.resolve_diff_commit(); - git::get_diff(diff_s, &work_path)? - }; - let res = - which_sem::whichi_sem(diff, git_status, model_info, lang.cloned(), extra.cloned()) - .await?; - - if *which.get_root_options().oneline() { - println!("{}", res.0); - Ok(()) - } else { - let part = res - .0 - .trim() - .parse::() - .map_err(Error::InvalidSemVer)?; - let s = cli_helper::SemVerSelector::new(part); - println!( - "should increase at\n{s}\nreasons:\n{}", - res.1.unwrap_or(String::new()).trim() - ); - Ok(()) - } - } - } -} diff --git a/src/readme_gen.rs b/src/readme_gen.rs deleted file mode 100644 index e89e3d0..0000000 --- a/src/readme_gen.rs +++ /dev/null @@ -1,60 +0,0 @@ -use std::{fmt::Display, io, path::Path}; - -use crate::{helper, llm}; - -const DEFAULT_PROMT: &str = - "You are a helpful assistant that generates professional README.md files. -Please read the following codebase and generate a README.md that includes: -- Project name and brief description -- Key features -- Technologies used -- Installation instructions -- How to run the project -- Example usage (if applicable) -- License section (if available in the code) -- Any relevant badges or links (GitHub repo, docs, etc.) - -Here is the project code or file list:"; - -#[derive(Debug)] -pub enum Error { - Io(std::io::Error), - Llm(llm::Error), -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - //Error::Io(e) => write!(f, "io error: {}", e), - Error::Io(e) => write!(f, "helper error: {}", e), - Error::Llm(e) => write!(f, "llm error: {}", e), - } - } -} - -impl From for Error { - fn from(value: io::Error) -> Self { - Self::Io(value) - } -} - -impl From for Error { - fn from(value: llm::Error) -> Self { - Self::Llm(value) - } -} - -pub async fn gen_readme, P: AsRef>( - path_list: &Vec

, - model: llm::LlmReqInfo, - lang: Option, - extra: Option, -) -> Result { - let lang = helper::init_lang(lang); - let code_base = helper::load_codebase(path_list)?; - let extra = helper::init_extra(extra); - - let prompt = format!("Please in {lang}.\n{DEFAULT_PROMT} {code_base}.\n{extra}"); - - Ok(llm::call_llm(model, prompt).await?) -} diff --git a/src/which_sem.rs b/src/which_sem.rs deleted file mode 100644 index 5a52047..0000000 --- a/src/which_sem.rs +++ /dev/null @@ -1,29 +0,0 @@ -use crate::{helper, llm}; - -const DEFAULT_PROMT: &str = "**Output 'SemVer filed name' and 'the reason' separated by ‘|’.about version filed name, Only contain semver name(Major or Minor or Patch)** must strictly adhere to this format: 'Minor | Reasons'. in Semantic Versioning, which field version should be incremented? think to reference git diff data:"; - -pub async fn whichi_sem>( - diff: T, - status: T, - model: llm::LlmReqInfo, - lang: Option, - extra: Option, -) -> Result<(String, Option), llm::Error> { - let diff = diff.as_ref(); - let st = status.as_ref(); - let extra = helper::init_extra(extra); - let lang = helper::init_lang(lang); - - let promt = - format!("Please in {lang}.\n{DEFAULT_PROMT}\ngit status: {st}\ndiff: {diff}\n{extra}"); - - let res = llm::call_llm(model, promt).await?; - - let res = res.split('|').collect::>(); - let ress = if res.len() < 3 { - (res[0].to_string(), Some(res[1].to_string())) - } else { - (res[0].to_string(), None) - }; - Ok(ress) -} diff --git a/tools/api_test/test.sh b/tools/api_test/test.sh deleted file mode 100755 index 19786ae..0000000 --- a/tools/api_test/test.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -call() { - model_name="$1" - url="https://generativelanguage.googleapis.com/v1beta/models/${model_name}:generateContent" - echo "$url" - - curl "${url}" \ - -H "x-goog-api-key: $GEMINI_API_KEY" \ - -H 'Content-Type: application/json' \ - -X POST \ - -d '{ - "contents": [ - { - "parts": [ - { - "text": "Explain how AI works in a few words" - } - ] - } - ] - }' -} - -# call "gemini-3-flash-preview" -call "gemini-2.5-flash" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..532cee8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + + "baseUrl": ".", + "paths": { + "@repo/core": ["packages/core/src"] + } + }, + "include": [ + "apps/**/*.ts", + "packages/**/*.ts" + ] +} From 2712045cc0a6389a5bc784edcde56e90cd7bf248 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Sun, 26 Apr 2026 03:08:15 +0900 Subject: [PATCH 02/10] chore: update core path alias to @ggw/core in tsconfig.json --- README.md | 1 + apps/ggw/main.ts | 0 packages/core/package.json | 9 +++++++++ tsconfig.json | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) mode change 100644 => 100755 apps/ggw/main.ts create mode 100644 packages/core/package.json diff --git a/README.md b/README.md index 5644923..6101491 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,4 @@ if you have bun, give executable permission to `main.ts` and run it to run comma ## TODO - [ ] setup Lib +- [ ] Tests diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts old mode 100644 new mode 100755 diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000..e14f4a8 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,9 @@ +{ + "name": "@ggw/core", + "version": "0.0.1", + "type": "module", + "exports": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } +} diff --git a/tsconfig.json b/tsconfig.json index 532cee8..a60d926 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "baseUrl": ".", "paths": { - "@repo/core": ["packages/core/src"] + "@ggw/core": ["packages/core/src"] } }, "include": [ From 2ed573ffd8a0acbfddf2e458a31ce9dd3ec93b15 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Sun, 26 Apr 2026 03:38:24 +0900 Subject: [PATCH 03/10] refactor(ggw): modularize code by moving utility and LLM logic to core packages --- README.md | 10 +++ apps/ggw/main.ts | 115 ++----------------------------- packages/core/src/cli/index.ts | 0 packages/core/src/cli/parser.ts | 14 ++++ packages/core/src/cui/index.ts | 0 packages/core/src/cui/prompt.ts | 26 +++++++ packages/core/src/cui/spinner.ts | 35 ++++++++++ packages/core/src/llm/gemini.ts | 11 +++ packages/core/src/llm/index.ts | 13 ++++ packages/core/src/llm/openai.ts | 20 ++++++ 10 files changed, 135 insertions(+), 109 deletions(-) create mode 100644 packages/core/src/cli/index.ts create mode 100644 packages/core/src/cli/parser.ts create mode 100644 packages/core/src/cui/index.ts create mode 100644 packages/core/src/cui/prompt.ts create mode 100644 packages/core/src/cui/spinner.ts create mode 100644 packages/core/src/llm/gemini.ts create mode 100644 packages/core/src/llm/index.ts create mode 100644 packages/core/src/llm/openai.ts diff --git a/README.md b/README.md index 6101491..81d5017 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,13 @@ if you have bun, give executable permission to `main.ts` and run it to run comma - [ ] setup Lib - [ ] Tests + +## RoadMap + +- [ ] impl `ggw`: wip + - [ ] tests works + - [ ] reproduct args: ns +- [ ] impl `readme`: ns +- [ ] impl `sumdiff`: ns +- [ ] impl `which-sem`: ns +- [ ] distribute as 1file: ns diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts index b0abad2..7136415 100755 --- a/apps/ggw/main.ts +++ b/apps/ggw/main.ts @@ -2,95 +2,10 @@ import { Command } from "commander"; import simpleGit from "simple-git"; -import { GoogleGenAI } from "@google/genai"; -import OpenAI from "openai"; -import { createInterface } from "node:readline/promises"; - -function fmt_output(s: string) { - const l = s.length; - const padding = 2; - const bar = "─".repeat(l + padding); - const top_bar = "╭" + bar + "╮"; - const bottom_bar = "╰" + bar + "╯"; - - const boddys = s.split("\n").map(line => `│ ${line} │`).join("\n"); - - return `${top_bar}\n${boddys}\n${bottom_bar}`; -} - -async function yes_no(prompt: string) { - const rl = createInterface({ - input: process.stdin, - output: process.stdout, - }); - - const ans = await rl.question(`${prompt} (y/n): `); - rl.close(); - - return ans.toLowerCase() === "y"; -} - -function spinner(promise: Promise, text = "Processing") { - const frames = ["-", "\\", "|", "/"]; - return withSpinner(promise, text); - - async function withSpinner( - promise: Promise, - text: string - ): Promise { - let i = 0; - - process.stdout.write("\x1b[?25l"); // hide cursor - - const interval = setInterval(() => { - const frame = frames[i = (i + 1) % frames.length]; - process.stdout.write(`\r${frame} ${text}`); - }, 100); - - try { - try { - const result = await promise; - clearInterval(interval); - process.stdout.write(`\r✔ Done\n`); - return result; - } catch (err) { - clearInterval(interval); - process.stdout.write(`\r✖ Error\n`); - throw err; - } - } finally { - process.stdout.write("\x1b[?25h"); // show cursor - } - } - -} -async function call_gemini(model: string, prompt: string) { - const ai = new GoogleGenAI({}); - const res = await ai.models.generateContent({ - model: model, - contents: prompt - }); - - return res.text ?? "nothing"; -} - -async function call_openAI(model: string, prompt: string) { - const client = new OpenAI({ - apiKey: process.env["OPENAI_API_KEY"], - }); - - const chatComp = await client.chat.completions.create({ - messages: [{ role: 'user', content: prompt }], - model: model, - stream: true, - }); - let buf = "" - for await (const Chunk of chatComp) { - buf += Chunk; - } - return buf; - -} +import { callLLM } from "packages/core/src/llm"; +import { spinner } from "packages/core/src/cui/spinner"; +import { fmt_output, yes_no } from "packages/core/src/cui/prompt"; +import { model_name_resolver } from "packages/core/src/cli/parser"; const program = new Command(); @@ -105,16 +20,7 @@ program.parse(); const options = program.opts(); const lang = String(options.lang); -const input_model = ((inp => { - const cut = String(inp).split("/"); - if (cut.length >= 2) { - return [String(cut[0]), String(cut[1])] - } -})(options.model)); - -const pro = (input_model?.[0] ?? "gemini").toLowerCase(); -const model = input_model?.[1] ?? "gemini-3-flash-preview"; - +const [pro, model] = model_name_resolver(options.model); const git = simpleGit(); const diff = await git.diff(); @@ -127,16 +33,7 @@ git status info and diff changes:\ ${diff} Please answer in ${lang}` -const cmt_msg_p = ((input_provider => { - if (input_provider === "gemini") { - return call_gemini(model, prompt); - } else if (input_provider === "openai") { - return call_openAI(model, prompt); - } else { - console.error(`this provider (${input_provider}) was not supported.`) - process.exit(1); - } -})(pro)); +const cmt_msg_p = callLLM(pro, model, prompt); const cmt_msg = await spinner(cmt_msg_p, `Calling ${model} ...`); diff --git a/packages/core/src/cli/index.ts b/packages/core/src/cli/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/core/src/cli/parser.ts b/packages/core/src/cli/parser.ts new file mode 100644 index 0000000..94fdbbc --- /dev/null +++ b/packages/core/src/cli/parser.ts @@ -0,0 +1,14 @@ +export type ModelInfo = [provider: string, model_name: string]; + +export function model_name_resolver(m: string): ModelInfo { + const input_model = ((inp => { + const cut = String(inp).split("/"); + if (cut.length >= 2) { + return [String(cut[0]), String(cut[1])] + } + })(m)); + + const pro = (input_model?.[0] ?? "gemini").toLowerCase(); + const model = input_model?.[1] ?? "gemini-3-flash-preview"; + return [pro, model]; +} diff --git a/packages/core/src/cui/index.ts b/packages/core/src/cui/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/core/src/cui/prompt.ts b/packages/core/src/cui/prompt.ts new file mode 100644 index 0000000..7ade974 --- /dev/null +++ b/packages/core/src/cui/prompt.ts @@ -0,0 +1,26 @@ +import { createInterface } from "node:readline/promises"; + +export async function yes_no(prompt: string) { + const rl = createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const ans = await rl.question(`${prompt} (y/n): `); + rl.close(); + + return ans.toLowerCase() === "y"; +} + +export function fmt_output(s: string) { + const l = s.length; + const padding = 2; + const bar = "─".repeat(l + padding); + const top_bar = "╭" + bar + "╮"; + const bottom_bar = "╰" + bar + "╯"; + + const boddys = s.split("\n").map(line => `│ ${line} │`).join("\n"); + + return `${top_bar}\n${boddys}\n${bottom_bar}`; +} + diff --git a/packages/core/src/cui/spinner.ts b/packages/core/src/cui/spinner.ts new file mode 100644 index 0000000..22ddae6 --- /dev/null +++ b/packages/core/src/cui/spinner.ts @@ -0,0 +1,35 @@ +export function spinner(promise: Promise, text = "Processing") { + const frames = ["-", "\\", "|", "/"]; + return withSpinner(promise, text); + + async function withSpinner( + promise: Promise, + text: string + ): Promise { + let i = 0; + + process.stdout.write("\x1b[?25l"); // hide cursor + + const interval = setInterval(() => { + const frame = frames[i = (i + 1) % frames.length]; + process.stdout.write(`\r${frame} ${text}`); + }, 100); + + try { + try { + const result = await promise; + clearInterval(interval); + process.stdout.write(`\r✔ Done\n`); + return result; + } catch (err) { + clearInterval(interval); + process.stdout.write(`\r✖ Error\n`); + throw err; + } + } finally { + process.stdout.write("\x1b[?25h"); // show cursor + } + } + +} + diff --git a/packages/core/src/llm/gemini.ts b/packages/core/src/llm/gemini.ts new file mode 100644 index 0000000..1921197 --- /dev/null +++ b/packages/core/src/llm/gemini.ts @@ -0,0 +1,11 @@ +import { GoogleGenAI } from "@google/genai"; + +export async function call_gemini(model: string, prompt: string) { + const ai = new GoogleGenAI({}); + const res = await ai.models.generateContent({ + model: model, + contents: prompt + }); + + return res.text ?? "nothing"; +} diff --git a/packages/core/src/llm/index.ts b/packages/core/src/llm/index.ts new file mode 100644 index 0000000..24efe19 --- /dev/null +++ b/packages/core/src/llm/index.ts @@ -0,0 +1,13 @@ +import { call_gemini } from "./gemini"; +import { call_openAI } from "./openai"; + +export function callLLM(provider: string, model: string, prompt: string) { + switch (provider.toLowerCase()) { + case "gemini": + return call_gemini(model, prompt); + case "openai": + return call_openAI(model, prompt); + default: + throw new Error("unknown provider"); + } +} diff --git a/packages/core/src/llm/openai.ts b/packages/core/src/llm/openai.ts new file mode 100644 index 0000000..4b26806 --- /dev/null +++ b/packages/core/src/llm/openai.ts @@ -0,0 +1,20 @@ +import OpenAI from "openai"; + +export async function call_openAI(model: string, prompt: string) { + const client = new OpenAI({ + apiKey: process.env["OPENAI_API_KEY"], + }); + + const chatComp = await client.chat.completions.create({ + messages: [{ role: 'user', content: prompt }], + model: model, + stream: true, + }); + let buf = "" + for await (const Chunk of chatComp) { + buf += Chunk; + } + return buf; + +} + From 968f1373b0602ac3e7b472165cfa93e5018d5d49 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Sun, 26 Apr 2026 11:07:24 +0900 Subject: [PATCH 04/10] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a14702c..777038b 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json # Finder (MacOS) folder config .DS_Store + +target/ From e33e9ce92575ad62438ef6353761f7dc8dfec1fe Mon Sep 17 00:00:00 2001 From: uliboooo Date: Mon, 27 Apr 2026 02:22:02 +0900 Subject: [PATCH 05/10] feat(ggw): add options for stdin, path, and diff range support --- apps/ggw/main.ts | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts index 7136415..588f1de 100755 --- a/apps/ggw/main.ts +++ b/apps/ggw/main.ts @@ -7,23 +7,41 @@ import { spinner } from "packages/core/src/cui/spinner"; import { fmt_output, yes_no } from "packages/core/src/cui/prompt"; import { model_name_resolver } from "packages/core/src/cli/parser"; -const program = new Command(); +type Options = { + model: string; + config?: string; + lang?: string; + path?: string; + stdin: boolean; + diff?: [string, string]; +} +const program = new Command(); program.name("ggw").description("Ghost git Writer - CLI tool for AI-powered commits").version("0.1.0"); - program - .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") - .option("-c, --config ", "path to config file") - .option("-l, --lang ", "select lang"); - + .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") + .option("-c, --config ", "path to config file") + .option("-l, --lang ", "select lang") + .option("-p, --path ", "work path. git project root path.") + .option("-I, --stdin", "use sdtin as diff content") + .option("-D, --diff ", "diff range"); program.parse(); -const options = program.opts(); -const lang = String(options.lang); -const [pro, model] = model_name_resolver(options.model); +const options = program.opts(); +const lang = options.lang ?? "English"; +const [provider, model] = model_name_resolver(options.model); +const git_repo_path = options.path ?? process.cwd(); + +const git = simpleGit(git_repo_path); -const git = simpleGit(); -const diff = await git.diff(); +const diff = await (async (use_stdin: boolean) => { + if (use_stdin) { + const input = await Bun.stdin.text(); + return input; + } else { + return await git.diff(options.diff); + } +})(options.stdin); const prompt = `You are an assistant that writes Git commit messages.\ When code changes include modifications to documentation files (e.g., README.md, docs/), ignore those changes and generate the commit message based solely on source code changes.\ @@ -33,7 +51,7 @@ git status info and diff changes:\ ${diff} Please answer in ${lang}` -const cmt_msg_p = callLLM(pro, model, prompt); +const cmt_msg_p = callLLM(provider, model, prompt); const cmt_msg = await spinner(cmt_msg_p, `Calling ${model} ...`); From 687fa3f6edcf55faee20e75f4fbf0ad7f495f494 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Mon, 27 Apr 2026 17:06:54 +0900 Subject: [PATCH 06/10] chrore: include git status in ggw --- apps/ggw/main.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts index 588f1de..3d008f5 100755 --- a/apps/ggw/main.ts +++ b/apps/ggw/main.ts @@ -17,10 +17,10 @@ type Options = { } const program = new Command(); -program.name("ggw").description("Ghost git Writer - CLI tool for AI-powered commits").version("0.1.0"); +program.name("ggw").description("Ghost git Writer - CLI tool for AI-powered commits").version("0.2.0"); program .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") - .option("-c, --config ", "path to config file") + // .option("-c, --config ", "path to config file") .option("-l, --lang ", "select lang") .option("-p, --path ", "work path. git project root path.") .option("-I, --stdin", "use sdtin as diff content") @@ -43,12 +43,19 @@ const diff = await (async (use_stdin: boolean) => { } })(options.stdin); +const git_st = await git.status(); + const prompt = `You are an assistant that writes Git commit messages.\ When code changes include modifications to documentation files (e.g., README.md, docs/), ignore those changes and generate the commit message based solely on source code changes.\ Given a description of code changes, output only a single-line commit message in Conventional Commits format (e.g., \"feat:\", \"fix:\", \"docs:\", etc.).\ Do not include any extra text, code blocks, or formatting. Only output the commit message.\ git status info and diff changes:\ +status: +${git_st} + +diff: ${diff} + Please answer in ${lang}` const cmt_msg_p = callLLM(provider, model, prompt); From 2a08827418280dac4aa0c4130443399ce0b24db4 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Mon, 27 Apr 2026 17:07:21 +0900 Subject: [PATCH 07/10] add: new command `sumdiff` --- apps/sumdiff/main.ts | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 apps/sumdiff/main.ts diff --git a/apps/sumdiff/main.ts b/apps/sumdiff/main.ts new file mode 100755 index 0000000..478eee4 --- /dev/null +++ b/apps/sumdiff/main.ts @@ -0,0 +1,65 @@ +#!/usr/bin/env bun + +import { Command } from "commander"; +import simpleGit from "simple-git"; +import { callLLM } from "packages/core/src/llm"; +import { spinner } from "packages/core/src/cui/spinner"; +import { model_name_resolver } from "packages/core/src/cli/parser"; + +type Options = { + model: string; + config?: string; + lang?: string; + path?: string; + stdin: boolean; + diff?: [string, string]; +} + +const program = new Command(); +program.name("ggw").description("Ghost git Writer - CLI tool for AI-powered commits").version("0.1.0"); +program + .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") + // .option("-c, --config ", "path to config file") + .option("-l, --lang ", "select lang") + .option("-p, --path ", "work path. git project root path.") + .option("-I, --stdin", "use sdtin as diff content") + .option("-D, --diff ", "diff range"); +program.parse(); + +const options = program.opts(); +const lang = options.lang ?? "English"; +const [provider, model] = model_name_resolver(options.model); +const git_repo_path = options.path ?? process.cwd(); + +const git = simpleGit(git_repo_path); + +const diff = await (async (use_stdin: boolean) => { + if (use_stdin) { + const input = await Bun.stdin.text(); + return input; + } else { + return await git.diff(options.diff); + } +})(options.stdin); + +const git_st = await git.status(); + +const prompt = `summarize the git diff changes. +List the key modifications, what was added, removed, or modified, and briefly explain their purpose or impact if possible. +about only changes. must not write about project. you don't readme writer, you summarize diff changes: + +status: +${git_st} + +diff: +${diff} + +Please answer in ${lang}.; +` + +const cmt_msg_p = callLLM(provider, model, prompt); + +const cmt_msg = await spinner(cmt_msg_p, `Calling ${model} ...`); + +console.log(cmt_msg); + From d608c481761c5071f97d846a5942ee9a89026b7c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 3 May 2026 01:56:09 +0000 Subject: [PATCH 08/10] feat: impl `which-sem` command Agent-Logs-Url: https://github.com/Uliboooo/ghost_git_writer/sessions/02b2595a-ee4a-4559-9466-877d851d809b Co-authored-by: Uliboooo <190558756+Uliboooo@users.noreply.github.com> --- apps/which-sem/main.ts | 78 +++++++++++++++++++++++++++++++++ packages/core/src/cui/semver.ts | 47 ++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 apps/which-sem/main.ts create mode 100644 packages/core/src/cui/semver.ts diff --git a/apps/which-sem/main.ts b/apps/which-sem/main.ts new file mode 100644 index 0000000..d7874c0 --- /dev/null +++ b/apps/which-sem/main.ts @@ -0,0 +1,78 @@ +#!/usr/bin/env bun + +import { Command } from "commander"; +import simpleGit from "simple-git"; +import { callLLM } from "packages/core/src/llm"; +import { spinner } from "packages/core/src/cui/spinner"; +import { model_name_resolver } from "packages/core/src/cli/parser"; +import { parseSemVerPart, semVerSelector } from "packages/core/src/cui/semver"; + +type Options = { + model: string; + lang?: string; + path?: string; + stdin: boolean; + diff?: [string, string]; + oneline: boolean; +} + +const program = new Command(); +program.name("which-sem").description("Determine which SemVer part (Major/Minor/Patch) should be bumped based on git diff").version("0.1.0"); +program + .option("-m, --model ", "LLM model to use (gemini)", "gemini/gemini-3-flash-preview") + .option("-l, --lang ", "select lang") + .option("-p, --path ", "work path. git project root path.") + .option("-I, --stdin", "use stdin as diff content") + .option("-D, --diff ", "diff range") + .option("-o, --oneline", "output only the SemVer part name"); +program.parse(); + +const options = program.opts(); +const lang = options.lang ?? "English"; +const [provider, model] = model_name_resolver(options.model); +const git_repo_path = options.path ?? process.cwd(); + +const git = simpleGit(git_repo_path); + +const diff = await (async (use_stdin: boolean) => { + if (use_stdin) { + const input = await Bun.stdin.text(); + return input; + } else { + return await git.diff(options.diff); + } +})(options.stdin); + +const git_st = await git.status(); + +const prompt = `**Output 'SemVer field name' and 'the reason' separated by '|'. About version field name, only contain semver name (Major or Minor or Patch)** Must strictly adhere to this format: 'Minor | Reasons'. In Semantic Versioning, which field version should be incremented? Think with reference to the git diff data: + +git status: +${git_st} + +diff: +${diff} + +Please answer in ${lang}.` + +const res_p = callLLM(provider, model, prompt); +const res = await spinner(res_p, `Calling ${model} ...`); + +const parts = res.split("|"); +const semver_raw = parts[0] ?? ""; +const reason = parts[1]?.trim() ?? ""; + +if (options.oneline) { + console.log(semver_raw.trim()); +} else { + const part = parseSemVerPart(semver_raw); + if (part === null) { + console.log(semver_raw.trim()); + } else { + const selector = semVerSelector(part); + console.log(`should increase at\n${selector}`); + if (reason) { + console.log(`reasons:\n${reason}`); + } + } +} diff --git a/packages/core/src/cui/semver.ts b/packages/core/src/cui/semver.ts new file mode 100644 index 0000000..8ab5f48 --- /dev/null +++ b/packages/core/src/cui/semver.ts @@ -0,0 +1,47 @@ +export type SemVerPart = "major" | "minor" | "patch"; + +const PARTS: { key: SemVerPart; label: string }[] = [ + { key: "major", label: "MAJOR" }, + { key: "minor", label: "MINOR" }, + { key: "patch", label: "PATCH" }, +]; + +export function parseSemVerPart(s: string): SemVerPart | null { + const lower = s.trim().toLowerCase(); + if (lower === "major" || lower === "minor" || lower === "patch") { + return lower as SemVerPart; + } + return null; +} + +export function semVerSelector(selected: SemVerPart): string { + let top = ""; + let mid = ""; + let bot = ""; + + for (let i = 0; i < PARTS.length; i++) { + const { label } = PARTS[i]; + const w = label.length; + const isSel = PARTS[i].key === selected; + const prevIsSel = i > 0 && PARTS[i - 1].key === selected; + + // Add separator before this item (skip if adjacent to selected) + if (i > 0 && !prevIsSel && !isSel) { + top += " "; + mid += "│"; + bot += " "; + } + + if (isSel) { + top += `╭${"─".repeat(w + 2)}╮`; + mid += `│ ${label} │`; + bot += `╰${"─".repeat(w + 2)}╯`; + } else { + top += " ".repeat(w + 2); + mid += ` ${label} `; + bot += " ".repeat(w + 2); + } + } + + return `${top}\n${mid}\n${bot}`; +} From d6c621f65afc9a2cf9e89807d7173cfcecc82ce1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 3 May 2026 01:57:31 +0000 Subject: [PATCH 09/10] fix: serialize git status to JSON string for LLM prompt in all apps Agent-Logs-Url: https://github.com/Uliboooo/ghost_git_writer/sessions/02b2595a-ee4a-4559-9466-877d851d809b Co-authored-by: Uliboooo <190558756+Uliboooo@users.noreply.github.com> --- apps/ggw/main.ts | 2 +- apps/sumdiff/main.ts | 2 +- apps/which-sem/main.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/ggw/main.ts b/apps/ggw/main.ts index 3d008f5..33318c5 100755 --- a/apps/ggw/main.ts +++ b/apps/ggw/main.ts @@ -43,7 +43,7 @@ const diff = await (async (use_stdin: boolean) => { } })(options.stdin); -const git_st = await git.status(); +const git_st = JSON.stringify(await git.status()); const prompt = `You are an assistant that writes Git commit messages.\ When code changes include modifications to documentation files (e.g., README.md, docs/), ignore those changes and generate the commit message based solely on source code changes.\ diff --git a/apps/sumdiff/main.ts b/apps/sumdiff/main.ts index 478eee4..ca03f15 100755 --- a/apps/sumdiff/main.ts +++ b/apps/sumdiff/main.ts @@ -42,7 +42,7 @@ const diff = await (async (use_stdin: boolean) => { } })(options.stdin); -const git_st = await git.status(); +const git_st = JSON.stringify(await git.status()); const prompt = `summarize the git diff changes. List the key modifications, what was added, removed, or modified, and briefly explain their purpose or impact if possible. diff --git a/apps/which-sem/main.ts b/apps/which-sem/main.ts index d7874c0..7ed4da3 100644 --- a/apps/which-sem/main.ts +++ b/apps/which-sem/main.ts @@ -43,7 +43,7 @@ const diff = await (async (use_stdin: boolean) => { } })(options.stdin); -const git_st = await git.status(); +const git_st = JSON.stringify(await git.status()); const prompt = `**Output 'SemVer field name' and 'the reason' separated by '|'. About version field name, only contain semver name (Major or Minor or Patch)** Must strictly adhere to this format: 'Minor | Reasons'. In Semantic Versioning, which field version should be incremented? Think with reference to the git diff data: From 9a91ff9c8a45f73695f1545d797a464776e3fd49 Mon Sep 17 00:00:00 2001 From: uliboooo Date: Mon, 11 May 2026 12:23:56 +0900 Subject: [PATCH 10/10] chore: make main.ts executable --- apps/which-sem/main.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 apps/which-sem/main.ts diff --git a/apps/which-sem/main.ts b/apps/which-sem/main.ts old mode 100644 new mode 100755