A safe, simple, extensible, and fast agent harness
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add default plugins to CI release workflow (#23)

+98 -19
+57 -2
.github/workflows/release.yml
··· 164 164 ${{ steps.cargo-dist.outputs.paths }} 165 165 ${{ env.BUILD_MANIFEST_NAME }} 166 166 167 + # Build and package all WASM plugins (platform-agnostic, built once) 168 + build-plugins: 169 + name: build-plugins 170 + needs: 171 + - plan 172 + if: ${{ needs.plan.outputs.publishing == 'true' }} 173 + runs-on: "ubuntu-22.04" 174 + env: 175 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 176 + steps: 177 + - uses: actions/checkout@v4 178 + with: 179 + persist-credentials: false 180 + - name: Install Rust wasm32-wasip2 target 181 + run: rustup target add wasm32-wasip2 182 + - name: Install protoc 183 + uses: arduino/setup-protoc@v3 184 + with: 185 + repo-token: ${{ secrets.GITHUB_TOKEN }} 186 + - name: Build WASM plugins 187 + run: | 188 + cargo metadata --no-deps --format-version 1 | \ 189 + jq -r '.packages[] | 190 + select(.manifest_path | test("/packages/")) | 191 + select(any(.targets[]; .kind[] == "cdylib")) | 192 + .name' | \ 193 + while read -r pkg; do 194 + echo "Building $pkg..." 195 + cargo build --release -p "$pkg" --target wasm32-wasip2 196 + done 197 + - name: Package plugins 198 + run: | 199 + VERSION="${{ needs.plan.outputs.tag }}" 200 + ARCHIVE="ein-plugins-${VERSION}.tar.gz" 201 + mkdir -p dist-plugins/tools dist-plugins/model_clients 202 + 203 + cargo metadata --no-deps --format-version 1 | \ 204 + jq -r '.packages[] | 205 + select(.manifest_path | test("/packages/")) | 206 + select(any(.targets[]; .kind[] == "cdylib")) | 207 + select(.metadata.ein.plugin_type != null) | 208 + [.name, .metadata.ein.plugin_type] | @tsv' | \ 209 + while IFS=$'\t' read -r name plugin_type; do 210 + cp "target/wasm32-wasip2/release/${name}.wasm" "dist-plugins/${plugin_type}s/" 211 + done 212 + 213 + tar -czf "$ARCHIVE" -C dist-plugins . 214 + echo "ARCHIVE=$ARCHIVE" >> "$GITHUB_ENV" 215 + - name: Upload plugin archive artifact 216 + uses: actions/upload-artifact@v6 217 + with: 218 + name: artifacts-build-plugins 219 + path: ${{ env.ARCHIVE }} 220 + 167 221 # Build and package all the platform-agnostic(ish) things 168 222 build-global-artifacts: 169 223 needs: ··· 215 269 - plan 216 270 - build-local-artifacts 217 271 - build-global-artifacts 218 - # Only run if we're "publishing", and only if plan, local and global didn't fail (skipped is fine) 219 - if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }} 272 + - build-plugins 273 + # Only run if we're "publishing", and only if plan, local, global, and plugins didn't fail (skipped is fine) 274 + if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') && (needs.build-plugins.result == 'skipped' || needs.build-plugins.result == 'success') }} 220 275 env: 221 276 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 222 277 runs-on: "ubuntu-22.04"
+16 -16
Cargo.lock
··· 903 903 904 904 [[package]] 905 905 name = "ein" 906 - version = "0.1.5" 906 + version = "0.1.6" 907 907 dependencies = [ 908 908 "anyhow", 909 909 "clap", ··· 914 914 915 915 [[package]] 916 916 name = "ein-agent" 917 - version = "0.1.5" 917 + version = "0.1.6" 918 918 dependencies = [ 919 919 "anyhow", 920 920 "async-trait", ··· 929 929 930 930 [[package]] 931 931 name = "ein-core" 932 - version = "0.1.5" 932 + version = "0.1.6" 933 933 dependencies = [ 934 934 "serde", 935 935 "serde_json", ··· 937 937 938 938 [[package]] 939 939 name = "ein-proto" 940 - version = "0.1.5" 940 + version = "0.1.6" 941 941 dependencies = [ 942 942 "prost", 943 943 "tonic", ··· 946 946 947 947 [[package]] 948 948 name = "ein-server" 949 - version = "0.1.5" 949 + version = "0.1.6" 950 950 dependencies = [ 951 951 "anyhow", 952 952 "async-trait", ··· 971 971 972 972 [[package]] 973 973 name = "ein-tui" 974 - version = "0.1.5" 974 + version = "0.1.6" 975 975 dependencies = [ 976 976 "anyhow", 977 977 "chrono", ··· 994 994 995 995 [[package]] 996 996 name = "ein_anthropic" 997 - version = "0.1.5" 997 + version = "0.1.6" 998 998 dependencies = [ 999 999 "anyhow", 1000 1000 "ein_plugin", ··· 1005 1005 1006 1006 [[package]] 1007 1007 name = "ein_bash" 1008 - version = "0.1.5" 1008 + version = "0.1.6" 1009 1009 dependencies = [ 1010 1010 "anyhow", 1011 1011 "ein_plugin", ··· 1016 1016 1017 1017 [[package]] 1018 1018 name = "ein_edit" 1019 - version = "0.1.5" 1019 + version = "0.1.6" 1020 1020 dependencies = [ 1021 1021 "anyhow", 1022 1022 "ein_plugin", ··· 1027 1027 1028 1028 [[package]] 1029 1029 name = "ein_http" 1030 - version = "0.1.5" 1030 + version = "0.1.6" 1031 1031 dependencies = [ 1032 1032 "anyhow", 1033 1033 "serde", ··· 1037 1037 1038 1038 [[package]] 1039 1039 name = "ein_ollama" 1040 - version = "0.1.5" 1040 + version = "0.1.6" 1041 1041 dependencies = [ 1042 1042 "anyhow", 1043 1043 "ein_plugin", ··· 1048 1048 1049 1049 [[package]] 1050 1050 name = "ein_openai" 1051 - version = "0.1.5" 1051 + version = "0.1.6" 1052 1052 dependencies = [ 1053 1053 "anyhow", 1054 1054 "ein_plugin", ··· 1059 1059 1060 1060 [[package]] 1061 1061 name = "ein_openrouter" 1062 - version = "0.1.5" 1062 + version = "0.1.6" 1063 1063 dependencies = [ 1064 1064 "anyhow", 1065 1065 "ein_plugin", ··· 1070 1070 1071 1071 [[package]] 1072 1072 name = "ein_plugin" 1073 - version = "0.1.5" 1073 + version = "0.1.6" 1074 1074 dependencies = [ 1075 1075 "anyhow", 1076 1076 "ein-core", ··· 1082 1082 1083 1083 [[package]] 1084 1084 name = "ein_read" 1085 - version = "0.1.5" 1085 + version = "0.1.6" 1086 1086 dependencies = [ 1087 1087 "anyhow", 1088 1088 "ein_plugin", ··· 1093 1093 1094 1094 [[package]] 1095 1095 name = "ein_write" 1096 - version = "0.1.5" 1096 + version = "0.1.6" 1097 1097 dependencies = [ 1098 1098 "anyhow", 1099 1099 "ein_plugin",
+1 -1
Cargo.toml
··· 19 19 resolver = "2" 20 20 21 21 [workspace.package] 22 - version = "0.1.5" 22 + version = "0.1.6" 23 23 edition = "2024" 24 24 authors = ["Mason Stallmo"] 25 25 license = "Apache-2.0"
+3
packages/ein_anthropic/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "model_client" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_bash/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "tool" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_edit/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "tool" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_ollama/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "model_client" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_openai/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "model_client" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_openrouter/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "model_client" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_read/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "tool" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13
+3
packages/ein_write/Cargo.toml
··· 5 5 authors.workspace = true 6 6 license.workspace = true 7 7 8 + [package.metadata.ein] 9 + plugin_type = "tool" 10 + 8 11 [lib] 9 12 crate-type = ["cdylib"] 10 13