@setoelkahfi / sigit / commits / 68653a2

Add release workflow, update license, and bump version to 0.1.1

Seto Elkahfi committed Apr 14, 2026 at 20:01 UTC 68653a2f7c52a3a0b785363e3b3d82462d17209e
4 files changed +439 -44
.github/workflows/release.yml
+189
new file mode 100644 index 0000000..cebac16 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,189 @@ +name: Release + +on: + push: + tags: + - "v*.*.*" + workflow_dispatch: + inputs: + tag: + description: "Release tag (e.g. v0.1.0)" + required: true + +permissions: + contents: write + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + name: Build ${{ matrix.artifact }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - target: aarch64-apple-darwin + os: macos-latest + artifact: sigit-darwin-aarch64 + binary: sigit + archive_ext: tar.gz + + - target: x86_64-apple-darwin + os: macos-13 + artifact: sigit-darwin-x86_64 + binary: sigit + archive_ext: tar.gz + + - target: x86_64-unknown-linux-gnu + os: ubuntu-latest + artifact: sigit-linux-x86_64 + binary: sigit + archive_ext: tar.gz + + - target: aarch64-unknown-linux-gnu + os: ubuntu-24.04-arm + artifact: sigit-linux-aarch64 + binary: sigit + archive_ext: tar.gz + + - target: x86_64-pc-windows-msvc + os: windows-latest + artifact: sigit-windows-x86_64 + binary: sigit.exe + archive_ext: zip + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + ref: ${{ github.event.inputs.tag || github.ref }} + + - name: Set release version + shell: bash + run: | + if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then + release_version="${GITHUB_REF_NAME#v}" + else + release_version="${{ github.event.inputs.tag }}" + release_version="${release_version#v}" + fi + + echo "RELEASE_VERSION=${release_version}" >> "$GITHUB_ENV" + + - name: Verify Cargo.toml version matches tag + shell: bash + run: | + CARGO_VERSION=$(cargo metadata --no-deps --format-version 1 \ + | jq -r '.packages[] | select(.name == "sigit") | .version') + + echo "Cargo.toml version : ${CARGO_VERSION}" + echo "Release tag version: ${RELEASE_VERSION}" + + if [[ "${CARGO_VERSION}" != "${RELEASE_VERSION}" ]]; then + echo "::error::Version mismatch — bump Cargo.toml version before tagging." + exit 1 + fi + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Setup Rust cache + uses: Swatinem/rust-cache@v2 + with: + key: release-${{ matrix.target }} + + - name: Build + shell: bash + run: cargo build --release --locked --target ${{ matrix.target }} + + - name: Package (tar.gz) + if: matrix.archive_ext == 'tar.gz' + shell: bash + run: | + binary="target/${{ matrix.target }}/release/${{ matrix.binary }}" + archive="${{ matrix.artifact }}.tar.gz" + + tar -czf "${archive}" -C "$(dirname "${binary}")" "${{ matrix.binary }}" + + echo "ARCHIVE=${archive}" >> "$GITHUB_ENV" + + - name: Package (zip) + if: matrix.archive_ext == 'zip' + shell: pwsh + run: | + $binary = "target\${{ matrix.target }}\release\${{ matrix.binary }}" + $archive = "${{ matrix.artifact }}.zip" + + Compress-Archive -Path $binary -DestinationPath $archive + + "ARCHIVE=$archive" | Out-File -FilePath $env:GITHUB_ENV -Append + + - name: Upload archive + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact }} + path: ${{ env.ARCHIVE }} + if-no-files-found: error + retention-days: 1 + + release: + name: Publish GitHub Release + needs: build + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + ref: ${{ github.event.inputs.tag || github.ref }} + + - name: Set release version and tag + shell: bash + run: | + if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then + release_tag="${GITHUB_REF_NAME}" + release_version="${GITHUB_REF_NAME#v}" + else + release_tag="${{ github.event.inputs.tag }}" + release_version="${{ github.event.inputs.tag }}" + release_version="${release_version#v}" + fi + + echo "RELEASE_TAG=${release_tag}" >> "$GITHUB_ENV" + echo "RELEASE_VERSION=${release_version}" >> "$GITHUB_ENV" + + - name: Download all archives + uses: actions/download-artifact@v4 + with: + path: archives + merge-multiple: true + + - name: Check whether release already exists + id: release-check + shell: bash + run: | + if gh release view "${RELEASE_TAG}" --repo "${{ github.repository }}" >/dev/null 2>&1; then + echo "Release ${RELEASE_TAG} already exists — skipping." + echo "exists=true" >> "$GITHUB_OUTPUT" + else + echo "exists=false" >> "$GITHUB_OUTPUT" + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create release and upload archives + if: steps.release-check.outputs.exists != 'true' + shell: bash + run: | + gh release create "${RELEASE_TAG}" \ + --title "siGit ${RELEASE_TAG}" \ + --generate-notes \ + archives/* + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Cargo.lock
+57 -41
index a994f4f..76708c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1056,16 +1056,15 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" dependencies = [ - "bitflags 2.11.0", + "bitflags 1.3.2", "crossterm_winapi", - "futures-core", - "mio", + "libc", + "mio 0.8.11", "parking_lot", - "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -1073,17 +1072,16 @@ dependencies = [ [[package]] name = "crossterm" -version = "0.29.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.11.0", "crossterm_winapi", - "derive_more", - "document-features", - "mio", + "futures-core", + "mio 1.2.0", "parking_lot", - "rustix 1.1.4", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -1437,15 +1435,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359" -[[package]] -name = "document-features" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" -dependencies = [ - "litrs", -] - [[package]] name = "dtoa" version = "1.0.11" @@ -3027,12 +3016,6 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" -[[package]] -name = "litrs" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - [[package]] name = "llguidance" version = "1.7.2" @@ -3287,6 +3270,18 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + [[package]] name = "mio" version = "1.2.0" @@ -3302,7 +3297,8 @@ dependencies = [ [[package]] name = "mistralrs" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb0a83340b4492ebba9760ba6845364de369c7e10c1f91af8733d574c7405fa" dependencies = [ "anyhow", "candle-core", @@ -3329,7 +3325,8 @@ dependencies = [ [[package]] name = "mistralrs-audio" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ac5d36f634c7c20c45845bc995be3b6387ab01048410386a5b180cfeaf89c72" dependencies = [ "anyhow", "apodize", @@ -3340,7 +3337,8 @@ dependencies = [ [[package]] name = "mistralrs-core" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b8b9e5c94491d9ceeded3a30291cb6af6ae74810a5776dd55e3bbb8b3429d4" dependencies = [ "ahash", "akin", @@ -3437,7 +3435,8 @@ dependencies = [ [[package]] name = "mistralrs-macros" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa9b4794322d3f89fe61d21f33f67be494c16d5bd869604b111218f32544d32" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -3448,7 +3447,8 @@ dependencies = [ [[package]] name = "mistralrs-mcp" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa97d4e3189ed80ebbc730b7da5b2356df0ae004ab489066249340c33c089ab" dependencies = [ "anyhow", "async-trait", @@ -3468,7 +3468,8 @@ dependencies = [ [[package]] name = "mistralrs-paged-attn" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e53ddf1537426997b46abdadbe6ca8a7ce7668004ed2b7cf00115016558bae8" dependencies = [ "anyhow", "candle-core", @@ -3484,7 +3485,8 @@ dependencies = [ [[package]] name = "mistralrs-quant" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980715493d252e9aaf0779c4c101576d67ef4dd9812bfd77a54987f6f17526f4" dependencies = [ "byteorder", "candle-core", @@ -3513,7 +3515,8 @@ dependencies = [ [[package]] name = "mistralrs-vision" version = "0.8.1" -source = "git+https://github.com/setoelkahfi/mistral.rs?branch=fix%2Fall-platform-fixes#a27af8ea01123e5d5777120619413345989f4006" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10046a3da2de5b702d3e829b5ddef7aa829ad454819dcc4876dea481a6cb5456" dependencies = [ "candle-core", "image", @@ -3827,7 +3830,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "onde" -version = "0.1.3" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939495589fec914220491600a00bddedcba437e5fd5e3926ca1af2e8da681bb0" dependencies = [ "anyhow", "cc", @@ -5292,7 +5297,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "sigit" -version = "0.1.0" +version = "0.1.1" dependencies = [ "agent-client-protocol", "anyhow", @@ -5325,7 +5330,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", - "mio", + "mio 0.8.11", + "mio 1.2.0", "signal-hook", ] @@ -6106,7 +6112,7 @@ checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" dependencies = [ "bytes", "libc", - "mio", + "mio 1.2.0", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -6286,10 +6292,11 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tqdm" version = "0.8.0" -source = "git+https://github.com/setoelkahfi/tqdm?branch=deps%2Fbump-crossterm#41e4182829136e6dadbdd1c36af824d19219147a" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b316d5c2ac649ca856dacd487d0ebb94f3b746bada51355d93dd2c007ab62a2e" dependencies = [ "anyhow", - "crossterm 0.29.0", + "crossterm 0.25.0", "once_cell", ] @@ -7266,6 +7273,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0"
Cargo.toml
+3 -3
index a5d8bca..b9fc36c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "sigit" -version = "0.1.0" +version = "0.1.1" edition = "2024" description = "siGit Code — ACP-compatible AI coding agent for smbCloud platform." documentation = "https://getsigit.5mb.app/" -license = "MIT OR Apache-2.0" +license = "Apache-2.0" [[bin]] name = "sigit" @@ -15,7 +15,7 @@ path = "src/main.rs" agent-client-protocol = "0.10.4" # Onde Inference engine (local LLM) -onde = { path = "../onde" } +onde = { version = "0.1.4" } # Async runtime async-trait = "0.1"
LICENSE
+190
new file mode 100644 index 0000000..e965300 --- /dev/null +++ b/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship made available under + the License, as indicated by a copyright notice that is included in + or attached to the work (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean, as defined by the copyright owner or by the + Legal Entity authorized to submit on behalf of the copyright owner, any + work of authorship, including the original version of the Work and any + modifications or additions to that Work or Derivative Works of the Work. + + "Contributor" shall mean Licensor and any Legal Entity on behalf of + whom a Contribution has been received by the Licensor and subsequently + incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any and all patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, You must include a readable copy of the + attribution notices contained within such NOTICE file, in + at least one of the following places: within a NOTICE text + file distributed as part of the Derivative Works; within + the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the + Derivative Works, if and wherever such third-party notices + normally appear. The contents of the NOTICE file are for + informational purposes only and do not modify the License. + You may add Your own attribution notices within Derivative + Works that You distribute, alongside or as an addendum to + the NOTICE text from the Work, provided that such additional + attribution notices cannot be construed as modifying the License. + + You may add Your own license statement for Your modifications and + may provide additional grant of rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Work, + and to permit persons to whom the Work is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Work. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or exemplary damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or all other + commercial damages or losses), even if such Contributor has been + advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format in use. Also, it is recommended + that a file or directory name be given on the same line as the + copyright notice for easier identification within third-party archives. + + Copyright 2026 Seto Elkahfi + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.