@smbcloud / cli / commits / b0eaddd

Use unify versions

Seto Elkahfi committed Jul 30, 2026 at 22:24 UTC b0eaddd511db887bfa37426e13d7fbb149a5f740
18 files changed +553 -309
.agents/AGENTS.md
+1 -1
@@ -101,7 +101,7 @@ make patch | make minor | make major | make custom VERSION=0.x.y
101
102 It commits `Release <version>` and tags `v<version>` locally; pushing is manual. Crate publishing is separate and manual (`cargo workspaces publish`, see `docs/development.md`). The per-target release workflows (`release-*.yml`) build the distributable artifacts.
103
104 -`server.json` (the MCP Registry listing) is version-synced by the same Makefile step, and `release-nuget.yml` triggers `release-mcp-registry.yml` once its publish job succeeds — the listing needs both npm and NuGet live at that version, and the registry validates its metadata against the real packages. See `docs/mcp-registry.md`.
104 +`server.json` and `server-xcrs.json` (the MCP Registry listings) are version-synced by the same Makefile step, and `release-nuget.yml` triggers `release-mcp-registry.yml` once its publish job succeeds — the listings need the npm, NuGet, and Cargo packages live at their recorded versions, and the registry validates their metadata against the real packages. See `docs/mcp-registry.md`.
105
106 ---
107
.github/workflows/release-mcp-registry.yml
+45 -3
@@ -15,7 +15,7 @@ permissions:
15
16 jobs:
17 publish:
18 - name: Publish server.json to the MCP Registry
18 + name: Publish MCP servers to the MCP Registry
19 runs-on: ubuntu-latest
20 steps:
21 - name: Checkout
@@ -44,14 +44,28 @@ jobs:
44 # NuGet proves ownership through an `mcp-name:` marker in the package README.
45 grep -q "mcp-name: ${server_name}" nuget/smbcloud-cli/README.md
46
47 - - name: Set the version in server.json
47 + xcrs_server_name="$(jq -r '.name' server-xcrs.json)"
48 + grep -q "mcp-name: ${xcrs_server_name}" crates/xcrs/README.md
49 +
50 + - name: Set release versions in server metadata
51 shell: bash
52 run: |
53 jq --arg v "${RELEASE_VERSION}" \
54 '.version = $v | .packages |= map(.version = $v)' \
55 server.json > server.tmp
56 mv server.tmp server.json
57 +
58 + xcrs_version="$(sed -n 's/^version = "\(.*\)"/\1/p' crates/xcrs/Cargo.toml | head -n 1)"
59 + if [ "${xcrs_version}" != "${RELEASE_VERSION}" ]; then
60 + echo "xcrs version ${xcrs_version} does not match release version ${RELEASE_VERSION}." >&2
61 + exit 1
62 + fi
63 + jq --arg v "${xcrs_version}" \
64 + '.version = $v | .packages |= map(.version = $v)' \
65 + server-xcrs.json > server-xcrs.tmp
66 + mv server-xcrs.tmp server-xcrs.json
67 cat server.json
68 + cat server-xcrs.json
69
70 - name: Verify the published packages carry the ownership marker
71 shell: bash
@@ -109,6 +123,29 @@ jobs:
123 fi
124 rm package.nupkg
125
126 + xcrs_server_name="$(jq -r '.name' server-xcrs.json)"
127 + xcrs_version="$(jq -r '.version' server-xcrs.json)"
128 + for attempt in $(seq 1 20); do
129 + if curl -fsSL "https://crates.io/api/v1/crates/xcrs/${xcrs_version}" >/dev/null; then
130 + echo "xcrs ${xcrs_version} is indexed on crates.io."
131 + break
132 + fi
133 + if [ "${attempt}" -eq 20 ]; then
134 + echo "xcrs ${xcrs_version} is still not indexed on crates.io after 10 minutes." >&2
135 + exit 1
136 + fi
137 + echo "Waiting for crates.io to index xcrs ${xcrs_version} (attempt ${attempt}/20)..."
138 + sleep 30
139 + done
140 +
141 + curl -fsSL -o xcrs.crate \
142 + "https://crates.io/api/v1/crates/xcrs/${xcrs_version}/download"
143 + if ! tar -xOf xcrs.crate "xcrs-${xcrs_version}/README.md" | grep -q "mcp-name: ${xcrs_server_name}"; then
144 + echo "xcrs ${xcrs_version} README is missing the 'mcp-name: ${xcrs_server_name}' marker." >&2
145 + exit 1
146 + fi
147 + rm xcrs.crate
148 +
149 - name: Install mcp-publisher
150 shell: bash
151 run: |
@@ -120,10 +157,15 @@ jobs:
157
158 - name: Publish
159 shell: bash
123 - run: ./mcp-publisher publish
160 + run: |
161 + ./mcp-publisher publish
162 + cp server-xcrs.json server.json
163 + ./mcp-publisher publish
164
165 - name: Verify the server is listed
166 shell: bash
167 run: |
168 server_name="$(jq -r '.name' server.json)"
169 curl -fsSL "https://registry.modelcontextprotocol.io/v0.1/servers?search=${server_name}" | jq .
170 + xcrs_server_name="$(jq -r '.name' server-xcrs.json)"
171 + curl -fsSL "https://registry.modelcontextprotocol.io/v0.1/servers?search=${xcrs_server_name}" | jq .
Cargo.lock
+1 -1
@@ -3996,7 +3996,7 @@ checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
3996
3997 [[package]]
3998 name = "xcrs"
3999 -version = "0.1.0"
3999 +version = "0.4.13"
4000 dependencies = [
4001 "anyhow",
4002 "base64",
Cargo.toml
+12 -12
@@ -29,17 +29,17 @@ schemars = "1"
29 serde = "1"
30 serde_json = "1.0.82"
31 serde_repr = "0.1"
32 -smbcloud-auth = { version = "0.4.9", path = "crates/smbcloud-auth" }
33 -smbcloud-auth-sdk = { version = "0.4.9", path = "crates/smbcloud-auth-sdk" }
34 -smbcloud-deploy = { version = "0.4.9", path = "crates/smbcloud-deploy" }
35 -smbcloud-email-sdk = { version = "0.4.9", path = "crates/smbcloud-email-sdk" }
36 -smbcloud-gresiq-sdk = { version = "0.4.9", path = "crates/smbcloud-gresiq-sdk" }
37 -smbcloud-mail = { version = "0.4.9", path = "crates/smbcloud-mail" }
38 -smbcloud-model = { version = "0.4.9", path = "crates/smbcloud-model" }
39 -smbcloud-network = { version = "0.4.9", path = "crates/smbcloud-network" }
40 -smbcloud-networking = { version = "0.4.9", path = "crates/smbcloud-networking" }
41 -smbcloud-networking-project = { version = "0.4.9", path = "crates/smbcloud-networking-project" }
42 -smbcloud-utils = { version = "0.4.9", path = "crates/smbcloud-utils" }
32 +smbcloud-auth = { version = "0.4.13", path = "crates/smbcloud-auth" }
33 +smbcloud-auth-sdk = { version = "0.4.13", path = "crates/smbcloud-auth-sdk" }
34 +smbcloud-deploy = { version = "0.4.13", path = "crates/smbcloud-deploy" }
35 +smbcloud-email-sdk = { version = "0.4.13", path = "crates/smbcloud-email-sdk" }
36 +smbcloud-gresiq-sdk = { version = "0.4.13", path = "crates/smbcloud-gresiq-sdk" }
37 +smbcloud-mail = { version = "0.4.13", path = "crates/smbcloud-mail" }
38 +smbcloud-model = { version = "0.4.13", path = "crates/smbcloud-model" }
39 +smbcloud-network = { version = "0.4.13", path = "crates/smbcloud-network" }
40 +smbcloud-networking = { version = "0.4.13", path = "crates/smbcloud-networking" }
41 +smbcloud-networking-project = { version = "0.4.13", path = "crates/smbcloud-networking-project" }
42 +smbcloud-utils = { version = "0.4.13", path = "crates/smbcloud-utils" }
43 spinners = "4.1.0"
44 strum = "0.27"
45 strum_macros = "0.27"
@@ -56,4 +56,4 @@ tsync = "2"
56 uniffi = "0.31"
57 url-builder = "0.1.1"
58 wasm-bindgen = "0.2"
59 -xcrs = { version = "0.1.0", path = "crates/xcrs" }
59 +xcrs = { version = "0.4.13", path = "crates/xcrs" }
Makefile
+10 -4
@@ -1,11 +1,11 @@
1 -.PHONY: help release patch minor major custom sync-release-metadata regenerate-release-lockfiles
1 +.PHONY: help release patch minor major custom sync-release-metadata regenerate-release-lockfiles check-release-versions
2
3 help:
4 @echo "Release commands:"
5 @echo " make patch"
6 @echo " make minor"
7 @echo " make major"
8 - @echo " make custom VERSION=0.3.40"
8 + @echo " make custom VERSION=0.4.14"
9
10 release:
11 @test -n "$(BUMP)" || (echo "BUMP is required" && exit 1)
@@ -19,6 +19,7 @@ release:
19 fi
20 @$(MAKE) sync-release-metadata
21 @$(MAKE) regenerate-release-lockfiles
22 + @$(MAKE) check-release-versions
23 @release_version=$$(sed -n 's/^version = "\(.*\)"/\1/p' crates/cli/Cargo.toml | head -n 1); \
24 if [ -z "$$release_version" ]; then echo "Unable to determine release version from crates/cli/Cargo.toml"; exit 1; fi; \
25 git add -A; \
@@ -32,9 +33,14 @@ sync-release-metadata:
33
34 regenerate-release-lockfiles:
35 @cargo generate-lockfile --manifest-path sdk/gems/auth/Cargo.toml
36 + @cargo generate-lockfile --manifest-path sdk/gems/email/Cargo.toml
37 @cargo generate-lockfile --manifest-path sdk/gems/model/Cargo.toml
36 - @bundle lock --gemfile sdk/gems/auth/Gemfile
37 - @bundle lock --gemfile sdk/gems/model/Gemfile
38 + @BUNDLE_GEMFILE=sdk/gems/auth/Gemfile bundle lock
39 + @BUNDLE_GEMFILE=sdk/gems/email/Gemfile bundle lock
40 + @BUNDLE_GEMFILE=sdk/gems/model/Gemfile bundle lock
41 +
42 +check-release-versions:
43 + @node ./scripts/check-release-versions.mjs
44
45 patch:
46 @$(MAKE) release BUMP=patch
crates/xcrs/Cargo.toml
+1 -1
@@ -1,6 +1,6 @@
1 [package]
2 name = "xcrs"
3 -version = "0.1.0"
3 +version = "0.4.13"
4 edition = "2021"
5 authors = ["Seto Elkahfi <seto@smbcloud.xyz>"]
6 description = "Rust abstraction for Xcode command line tools."
crates/xcrs/README.md new
+18
@@ -0,0 +1,18 @@
1 +# XCRS
2 +
3 +Rust-native Xcode command-line and Apple simulator automation tools with an
4 +MCP server for simulator and ControlKit workflows.
5 +
6 +MCP Registry name: `mcp-name: io.github.smbcloudXYZ/xcrs`
7 +
8 +## Run the MCP server
9 +
10 +```sh
11 +cargo install xcrs
12 +xcrs --mcp
13 +```
14 +
15 +## Repository
16 +
17 +Source and documentation are available in the
18 +[smbcloud-cli repository](https://github.com/smbcloudXYZ/smbcloud-cli/tree/main/crates/xcrs).
docs/mcp-registry.md
+20 -12
@@ -1,10 +1,13 @@
1 # MCP Registry
2
3 -The smbCloud CLI's MCP server is listed in the [official MCP Registry](https://registry.modelcontextprotocol.io)
4 -as **`io.github.smbcloudXYZ/smbcloud-cli`**. The registry is a metadata index —
5 -it doesn't host binaries — so the listing points at packages we already publish
6 -to npm and NuGet, and clients that browse the registry can offer a one-click
7 -install of `smb --mcp`.
3 +The repository publishes two MCP servers to the [official MCP Registry](https://registry.modelcontextprotocol.io):
4 +
5 +- **`io.github.smbcloudXYZ/smbcloud-cli`** — the `smb --mcp` server for smbCloud resources, simulators, and ControlKit runners.
6 +- **`io.github.smbcloudXYZ/xcrs`** — the standalone Rust `xcrs --mcp` server for Xcode and Apple simulator tooling.
7 +
8 +The registry is a metadata index — it doesn't host binaries. The smbCloud
9 +listing points at packages published to npm and NuGet, while the standalone
10 +XCRS listing points at the `xcrs` crate on crates.io.
11
12 For running and configuring the server itself, see [MCP Server](./mcp.md).
13
@@ -12,9 +15,11 @@ For running and configuring the server itself, see [MCP Server](./mcp.md).
15
16 | Piece | Where |
17 | --- | --- |
15 -| Server metadata | [`server.json`](../server.json) at the repo root |
18 +| smbCloud server metadata | [`server.json`](../server.json) at the repo root |
19 +| XCRS server metadata | [`server-xcrs.json`](../server-xcrs.json) at the repo root |
20 | npm ownership proof | `mcpName` in the generated `@smbcloud/cli` `package.json` (`npm/scripts/render-main-package.cjs`) |
21 | NuGet ownership proof | `<!-- mcp-name: ... -->` in `nuget/smbcloud-cli/README.md` |
22 +| Cargo ownership proof | Visible `mcp-name: ...` text in `crates/xcrs/README.md` |
23 | Publishing | `.github/workflows/release-mcp-registry.yml` |
24
25 The registry checks each listed package for a marker naming the server. If the
@@ -60,9 +65,9 @@ documented in [Install](./cli-install.md).
65
66 ## Releasing a new version
67
63 -`server.json` carries the version twice — once for the server, once per package
64 -— and both are updated by `make patch | minor | major` along with the rest of
65 -the release metadata (`scripts/sync-release-version.mjs`).
68 +Each server metadata file carries its version twice — once for the server, once
69 +per package — and both are updated by `make patch | minor | major` along with
70 +the rest of the release metadata (`scripts/sync-release-version.mjs`).
71
72 Publishing is chained off the release: pushing a `v*` tag runs the crates.io
73 workflow, which fans out to the distribution workflows, and **NuGet CLI
@@ -83,10 +88,11 @@ the tag:
88 gh workflow run release-mcp-registry.yml -f tag=v0.4.13
89 ```
90
86 -Confirm the listing afterwards:
91 +Confirm both listings afterwards:
92
93 ```sh
94 curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.smbcloudXYZ/smbcloud-cli"
95 +curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.smbcloudXYZ/xcrs"
96 ```
97
98 ## Publishing by hand
@@ -99,5 +105,7 @@ mcp-publisher login github # device flow, needs push access to smbcloudXY
105 mcp-publisher publish # reads ./server.json
106 ```
107
102 -Versions are immutable — republishing the same version is rejected. Fixing a
103 -bad listing means shipping a new patch version.
108 +The release workflow publishes `server.json`, then temporarily swaps in
109 +`server-xcrs.json` and publishes the standalone entry as well. Versions are
110 +immutable — republishing the same version is rejected. Fixing a bad listing
111 +means shipping a new patch version.
npm/smbcloud-cli/package-lock.json
+7 -7
@@ -1,12 +1,12 @@
1 {
2 "name": "@smbcloud/cli",
3 - "version": "0.4.7",
3 + "version": "0.4.13",
4 "lockfileVersion": 3,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "@smbcloud/cli",
9 - "version": "0.4.7",
9 + "version": "0.4.13",
10 "license": "Apache-2.0",
11 "bin": {
12 "smb": "lib/index.js"
@@ -19,11 +19,11 @@
19 "typescript": "^5.0.0"
20 },
21 "optionalDependencies": {
22 - "@smbcloud/cli-darwin-arm64": "0.4.7",
23 - "@smbcloud/cli-darwin-x64": "0.4.7",
24 - "@smbcloud/cli-linux-x64": "0.4.7",
25 - "@smbcloud/cli-windows-arm64": "0.4.7",
26 - "@smbcloud/cli-windows-x64": "0.4.7"
22 + "@smbcloud/cli-darwin-arm64": "0.4.13",
23 + "@smbcloud/cli-darwin-x64": "0.4.13",
24 + "@smbcloud/cli-linux-x64": "0.4.13",
25 + "@smbcloud/cli-windows-arm64": "0.4.13",
26 + "@smbcloud/cli-windows-x64": "0.4.13"
27 }
28 },
29 "node_modules/@eslint-community/eslint-utils": {
npm/smbcloud-cli/package.json
+6 -6
@@ -1,6 +1,6 @@
1 {
2 "name": "@smbcloud/cli",
3 - "version": "0.4.7",
3 + "version": "0.4.13",
4 "keywords": [
5 "smbcloud",
6 "cli",
@@ -58,10 +58,10 @@
58 "typescript": "^5.0.0"
59 },
60 "optionalDependencies": {
61 - "@smbcloud/cli-darwin-arm64": "0.4.7",
62 - "@smbcloud/cli-darwin-x64": "0.4.7",
63 - "@smbcloud/cli-linux-x64": "0.4.7",
64 - "@smbcloud/cli-windows-arm64": "0.4.7",
65 - "@smbcloud/cli-windows-x64": "0.4.7"
61 + "@smbcloud/cli-darwin-arm64": "0.4.13",
62 + "@smbcloud/cli-darwin-x64": "0.4.13",
63 + "@smbcloud/cli-linux-x64": "0.4.13",
64 + "@smbcloud/cli-windows-arm64": "0.4.13",
65 + "@smbcloud/cli-windows-x64": "0.4.13"
66 }
67 }
nuget/smbcloud-cli/SmbCloud.Cli.csproj
+1 -1
@@ -7,7 +7,7 @@
7 <PackAsTool>true</PackAsTool>
8 <ToolCommandName>smb</ToolCommandName>
9 <PackageId>SmbCloud.Cli</PackageId>
10 - <PackageVersion>0.0.0-local</PackageVersion>
10 + <PackageVersion>0.4.13</PackageVersion>
11 <Version>$(PackageVersion)</Version>
12 <Authors>Seto Elkahfi</Authors>
13 <Description>smbCloud command line interface.</Description>
scripts/check-release-versions.mjs new
+102
@@ -0,0 +1,102 @@
1 +import { existsSync, readFileSync, readdirSync } from "node:fs";
2 +import { resolve } from "node:path";
3 +
4 +const repoRoot = resolve(import.meta.dirname, "..");
5 +const expectedVersion = readFileSync(resolve(repoRoot, "crates/cli/Cargo.toml"), "utf8")
6 + .match(/^version\s*=\s*"([^"]+)"/m)?.[1];
7 +
8 +if (!expectedVersion) {
9 + throw new Error("Unable to determine the release version from crates/cli/Cargo.toml");
10 +}
11 +
12 +const mismatches = [];
13 +
14 +function read(path) {
15 + return readFileSync(resolve(repoRoot, path), "utf8");
16 +}
17 +
18 +function check(path, actualVersion) {
19 + if (actualVersion !== expectedVersion) {
20 + mismatches.push(`${path}: ${actualVersion ?? "missing"} (expected ${expectedVersion})`);
21 + }
22 +}
23 +
24 +function cargoPackageVersion(path) {
25 + return read(path).match(/^\[package\][\s\S]*?^version\s*=\s*"([^"]+)"/m)?.[1];
26 +}
27 +
28 +for (const directory of ["crates", "sdk/gems"]) {
29 + const directoryPath = resolve(repoRoot, directory);
30 + for (const entry of readdirSync(directoryPath, { withFileTypes: true })) {
31 + if (!entry.isDirectory()) {
32 + continue;
33 + }
34 +
35 + const candidates = [
36 + `${directory}/${entry.name}/Cargo.toml`,
37 + ...readdirSync(resolve(directoryPath, entry.name), { withFileTypes: true })
38 + .filter((nestedEntry) => nestedEntry.isDirectory())
39 + .map((nestedEntry) => `${directory}/${entry.name}/${nestedEntry.name}/Cargo.toml`),
40 + ];
41 +
42 + for (const candidate of candidates) {
43 + if (existsSync(resolve(repoRoot, candidate))) {
44 + const version = cargoPackageVersion(candidate);
45 + if (version) {
46 + check(candidate, version);
47 + }
48 + }
49 + }
50 + }
51 +}
52 +
53 +for (const match of read("Cargo.toml").matchAll(
54 + /^([\w-]+)\s*=\s*\{\s*version\s*=\s*"([^"]+)"\s*,\s*path\s*=\s*"crates\//gm,
55 +)) {
56 + check(`Cargo.toml workspace dependency ${match[1]}`, match[2]);
57 +}
58 +
59 +for (const path of [
60 + "sdk/gems/auth/lib/auth/version.rb",
61 + "sdk/gems/email/lib/email/version.rb",
62 + "sdk/gems/model/lib/model/version.rb",
63 +]) {
64 + check(path, read(path).match(/VERSION\s*=\s*['"]([^'"]+)['"]/)?.[1]);
65 +}
66 +
67 +const npmPackage = JSON.parse(read("npm/smbcloud-cli/package.json"));
68 +check("npm/smbcloud-cli/package.json", npmPackage.version);
69 +
70 +const sdkNpmPackage = JSON.parse(read("sdk/npm/smbcloud-auth/package.json"));
71 +check("sdk/npm/smbcloud-auth/package.json", sdkNpmPackage.version);
72 +
73 +const npmLock = JSON.parse(read("npm/smbcloud-cli/package-lock.json"));
74 +check("npm/smbcloud-cli/package-lock.json", npmLock.version);
75 +check("npm/smbcloud-cli/package-lock.json packages root", npmLock.packages?.[""]?.version);
76 +
77 +for (const path of ["server.json", "server-xcrs.json"]) {
78 + const server = JSON.parse(read(path));
79 + check(path, server.version);
80 + for (const [index, packageEntry] of (server.packages ?? []).entries()) {
81 + check(`${path} package ${index + 1}`, packageEntry.version);
82 + }
83 +}
84 +
85 +check(
86 + "nuget/smbcloud-cli/SmbCloud.Cli.csproj",
87 + read("nuget/smbcloud-cli/SmbCloud.Cli.csproj").match(/<PackageVersion>([^<]+)<\/PackageVersion>/)?.[1],
88 +);
89 +check(
90 + "sdk/gems/email/Gemfile.lock",
91 + read("sdk/gems/email/Gemfile.lock").match(/smbcloud-email \(([^)]+)\)/)?.[1],
92 +);
93 +
94 +if (mismatches.length > 0) {
95 + console.error(`Release version mismatch detected for ${expectedVersion}:`);
96 + for (const mismatch of mismatches) {
97 + console.error(`- ${mismatch}`);
98 + }
99 + process.exit(1);
100 +}
101 +
102 +console.log(`All release artifacts use version ${expectedVersion}.`);
scripts/sync-release-version.mjs
+105
@@ -3,12 +3,19 @@ import { resolve } from "node:path";
3
4 const repoRoot = resolve(import.meta.dirname, "..");
5 const cliCargoTomlPath = resolve(repoRoot, "crates/cli/Cargo.toml");
6 +const npmCliPackageJsonPath = resolve(repoRoot, "npm/smbcloud-cli/package.json");
7 +const npmCliPackageLockPath = resolve(repoRoot, "npm/smbcloud-cli/package-lock.json");
8 +const nugetCliProjectPath = resolve(repoRoot, "nuget/smbcloud-cli/SmbCloud.Cli.csproj");
9 const sdkNpmPackageJsonPath = resolve(repoRoot, "sdk/npm/smbcloud-auth/package.json");
10 const authGemVersionPath = resolve(repoRoot, "sdk/gems/auth/lib/auth/version.rb");
11 const authGemCargoTomlPath = resolve(repoRoot, "sdk/gems/auth/ext/auth/Cargo.toml");
12 const modelGemVersionPath = resolve(repoRoot, "sdk/gems/model/lib/model/version.rb");
13 const modelGemCargoTomlPath = resolve(repoRoot, "sdk/gems/model/ext/model/Cargo.toml");
14 +const emailGemVersionPath = resolve(repoRoot, "sdk/gems/email/lib/email/version.rb");
15 +const emailGemCargoTomlPath = resolve(repoRoot, "sdk/gems/email/ext/email/Cargo.toml");
16 +const emailGemLockPath = resolve(repoRoot, "sdk/gems/email/Gemfile.lock");
17 const mcpServerJsonPath = resolve(repoRoot, "server.json");
18 +const xcrsMcpServerJsonPath = resolve(repoRoot, "server-xcrs.json");
19
20 function readText(path) {
21 return readFileSync(path, "utf8");
@@ -53,6 +60,50 @@ const [major = "0", minor = "0"] = releaseVersion.split(".");
60 const rubySdkRequirement = `${major}.${minor}`;
61 const updatedPaths = [];
62
63 +if (
64 + updateFile(npmCliPackageJsonPath, (content) => {
65 + const parsed = JSON.parse(content);
66 + parsed.version = releaseVersion;
67 +
68 + for (const packageName of Object.keys(parsed.optionalDependencies ?? {})) {
69 + parsed.optionalDependencies[packageName] = releaseVersion;
70 + }
71 +
72 + return `${JSON.stringify(parsed, null, 2)}\n`;
73 + })
74 +) {
75 + updatedPaths.push(npmCliPackageJsonPath);
76 +}
77 +
78 +if (
79 + updateFile(npmCliPackageLockPath, (content) => {
80 + const parsed = JSON.parse(content);
81 + parsed.version = releaseVersion;
82 + parsed.packages[""].version = releaseVersion;
83 +
84 + for (const packageName of Object.keys(parsed.packages[""].optionalDependencies ?? {})) {
85 + parsed.packages[""].optionalDependencies[packageName] = releaseVersion;
86 + }
87 +
88 + return `${JSON.stringify(parsed, null, 2)}\n`;
89 + })
90 +) {
91 + updatedPaths.push(npmCliPackageLockPath);
92 +}
93 +
94 +if (
95 + updateFile(nugetCliProjectPath, (content) =>
96 + replaceOrThrow(
97 + content,
98 + /<PackageVersion>[^<]+<\/PackageVersion>/,
99 + `<PackageVersion>${releaseVersion}</PackageVersion>`,
100 + `${nugetCliProjectPath} package version`,
101 + ),
102 + )
103 +) {
104 + updatedPaths.push(nugetCliProjectPath);
105 +}
106 +
107 if (
108 updateFile(sdkNpmPackageJsonPath, (content) => {
109 const parsed = JSON.parse(content);
@@ -130,6 +181,45 @@ if (
181 updatedPaths.push(modelGemCargoTomlPath);
182 }
183
184 +if (
185 + updateFile(emailGemVersionPath, (content) =>
186 + replaceOrThrow(
187 + content,
188 + /VERSION\s*=\s*'[^']+'/,
189 + `VERSION = '${releaseVersion}'`,
190 + `${emailGemVersionPath} VERSION constant`,
191 + ),
192 + )
193 +) {
194 + updatedPaths.push(emailGemVersionPath);
195 +}
196 +
197 +if (
198 + updateFile(emailGemCargoTomlPath, (content) =>
199 + replaceOrThrow(
200 + content,
201 + /^version\s*=\s*"[^"]+"/m,
202 + `version = "${releaseVersion}"`,
203 + `${emailGemCargoTomlPath} package version`,
204 + ),
205 + )
206 +) {
207 + updatedPaths.push(emailGemCargoTomlPath);
208 +}
209 +
210 +if (
211 + updateFile(emailGemLockPath, (content) =>
212 + replaceOrThrow(
213 + content,
214 + /(smbcloud-email \()[^)]+(\))/,
215 + `$1${releaseVersion}$2`,
216 + `${emailGemLockPath} gem version`,
217 + ),
218 + )
219 +) {
220 + updatedPaths.push(emailGemLockPath);
221 +}
222 +
223 if (
224 updateFile(mcpServerJsonPath, (content) => {
225 const parsed = JSON.parse(content);
@@ -145,6 +235,21 @@ if (
235 updatedPaths.push(mcpServerJsonPath);
236 }
237
238 +if (
239 + updateFile(xcrsMcpServerJsonPath, (content) => {
240 + const parsed = JSON.parse(content);
241 + parsed.version = releaseVersion;
242 +
243 + for (const pkg of parsed.packages ?? []) {
244 + pkg.version = releaseVersion;
245 + }
246 +
247 + return `${JSON.stringify(parsed, null, 2)}\n`;
248 + })
249 +) {
250 + updatedPaths.push(xcrsMcpServerJsonPath);
251 +}
252 +
253 console.log(`Release version: ${releaseVersion}`);
254
255 if (updatedPaths.length === 0) {
sdk/gems/email/Cargo.lock
+169 -258
@@ -114,7 +114,7 @@ version = "0.72.1"
114 source = "registry+https://github.com/rust-lang/crates.io-index"
115 checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
116 dependencies = [
117 - "bitflags 2.13.0",
117 + "bitflags 2.13.1",
118 "cexpr",
119 "clang-sys",
120 "itertools",
@@ -123,7 +123,7 @@ dependencies = [
123 "regex",
124 "rustc-hash",
125 "shlex 1.3.0",
126 - "syn 2.0.118",
126 + "syn 2.0.119",
127 ]
128
129 [[package]]
@@ -134,9 +134,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
134
135 [[package]]
136 name = "bitflags"
137 -version = "2.13.0"
137 +version = "2.13.1"
138 source = "registry+https://github.com/rust-lang/crates.io-index"
139 -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
139 +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
140
141 [[package]]
142 name = "bumpalo"
@@ -146,15 +146,15 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
146
147 [[package]]
148 name = "bytes"
149 -version = "1.12.0"
149 +version = "1.12.1"
150 source = "registry+https://github.com/rust-lang/crates.io-index"
151 -checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
151 +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
152
153 [[package]]
154 name = "cc"
155 -version = "1.2.65"
155 +version = "1.4.0"
156 source = "registry+https://github.com/rust-lang/crates.io-index"
157 -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96"
157 +checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9"
158 dependencies = [
159 "find-msvc-tools",
160 "shlex 2.0.1",
@@ -177,9 +177,20 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
177
178 [[package]]
179 name = "cfg_aliases"
180 -version = "0.2.1"
180 +version = "0.2.2"
181 +source = "registry+https://github.com/rust-lang/crates.io-index"
182 +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
183 +
184 +[[package]]
185 +name = "chacha20"
186 +version = "0.10.1"
187 source = "registry+https://github.com/rust-lang/crates.io-index"
182 -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
188 +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
189 +dependencies = [
190 + "cfg-if",
191 + "cpufeatures",
192 + "rand_core",
193 +]
194
195 [[package]]
196 name = "chrono"
@@ -197,9 +208,9 @@ dependencies = [
208
209 [[package]]
210 name = "clang-sys"
200 -version = "1.8.1"
211 +version = "1.9.1"
212 source = "registry+https://github.com/rust-lang/crates.io-index"
202 -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
213 +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a"
214 dependencies = [
215 "glob",
216 "libc",
@@ -223,9 +234,9 @@ dependencies = [
234
235 [[package]]
236 name = "clap"
226 -version = "4.6.1"
237 +version = "4.6.4"
238 source = "registry+https://github.com/rust-lang/crates.io-index"
228 -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
239 +checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7"
240 dependencies = [
241 "clap_builder",
242 "clap_derive",
@@ -233,9 +244,9 @@ dependencies = [
244
245 [[package]]
246 name = "clap_builder"
236 -version = "4.6.0"
247 +version = "4.6.2"
248 source = "registry+https://github.com/rust-lang/crates.io-index"
238 -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
249 +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b"
250 dependencies = [
251 "anstream",
252 "anstyle",
@@ -245,14 +256,14 @@ dependencies = [
256
257 [[package]]
258 name = "clap_derive"
248 -version = "4.6.1"
259 +version = "4.6.4"
260 source = "registry+https://github.com/rust-lang/crates.io-index"
250 -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
261 +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061"
262 dependencies = [
263 "heck 0.5.0",
264 "proc-macro2",
265 "quote",
255 - "syn 2.0.118",
266 + "syn 3.0.3",
267 ]
268
269 [[package]]
@@ -292,26 +303,35 @@ version = "0.8.7"
303 source = "registry+https://github.com/rust-lang/crates.io-index"
304 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
305
306 +[[package]]
307 +name = "cpufeatures"
308 +version = "0.3.0"
309 +source = "registry+https://github.com/rust-lang/crates.io-index"
310 +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
311 +dependencies = [
312 + "libc",
313 +]
314 +
315 [[package]]
316 name = "displaydoc"
297 -version = "0.2.6"
317 +version = "0.2.7"
318 source = "registry+https://github.com/rust-lang/crates.io-index"
299 -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
319 +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
320 dependencies = [
321 "proc-macro2",
322 "quote",
303 - "syn 2.0.118",
323 + "syn 3.0.3",
324 ]
325
326 [[package]]
327 name = "either"
308 -version = "1.16.0"
328 +version = "1.17.0"
329 source = "registry+https://github.com/rust-lang/crates.io-index"
310 -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
330 +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d"
331
332 [[package]]
333 name = "email"
314 -version = "0.4.7"
334 +version = "0.4.13"
335 dependencies = [
336 "magnus",
337 "serde_json",
@@ -336,30 +356,30 @@ dependencies = [
356
357 [[package]]
358 name = "futures-channel"
339 -version = "0.3.32"
359 +version = "0.3.33"
360 source = "registry+https://github.com/rust-lang/crates.io-index"
341 -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
361 +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae"
362 dependencies = [
363 "futures-core",
364 ]
365
366 [[package]]
367 name = "futures-core"
348 -version = "0.3.32"
368 +version = "0.3.33"
369 source = "registry+https://github.com/rust-lang/crates.io-index"
350 -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
370 +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7"
371
372 [[package]]
373 name = "futures-task"
354 -version = "0.3.32"
374 +version = "0.3.33"
375 source = "registry+https://github.com/rust-lang/crates.io-index"
356 -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
376 +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109"
377
378 [[package]]
379 name = "futures-util"
360 -version = "0.3.32"
380 +version = "0.3.33"
381 source = "registry+https://github.com/rust-lang/crates.io-index"
362 -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
382 +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa"
383 dependencies = [
384 "futures-core",
385 "futures-task",
@@ -395,23 +415,23 @@ dependencies = [
415
416 [[package]]
417 name = "getrandom"
398 -version = "0.3.4"
418 +version = "0.4.3"
419 source = "registry+https://github.com/rust-lang/crates.io-index"
400 -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
420 +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
421 dependencies = [
422 "cfg-if",
423 "js-sys",
424 "libc",
425 "r-efi",
406 - "wasip2",
426 + "rand_core",
427 "wasm-bindgen",
428 ]
429
430 [[package]]
431 name = "glob"
412 -version = "0.3.3"
432 +version = "0.3.4"
433 source = "registry+https://github.com/rust-lang/crates.io-index"
414 -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
434 +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
435
436 [[package]]
437 name = "heck"
@@ -445,9 +465,9 @@ dependencies = [
465
466 [[package]]
467 name = "http"
448 -version = "1.4.2"
468 +version = "1.5.0"
469 source = "registry+https://github.com/rust-lang/crates.io-index"
450 -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
470 +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
471 dependencies = [
472 "bytes",
473 "itoa",
@@ -455,9 +475,9 @@ dependencies = [
475
476 [[package]]
477 name = "http-body"
458 -version = "1.0.1"
478 +version = "1.1.0"
479 source = "registry+https://github.com/rust-lang/crates.io-index"
460 -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
480 +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"
481 dependencies = [
482 "bytes",
483 "http",
@@ -465,9 +485,9 @@ dependencies = [
485
486 [[package]]
487 name = "http-body-util"
468 -version = "0.1.3"
488 +version = "0.1.4"
489 source = "registry+https://github.com/rust-lang/crates.io-index"
470 -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
490 +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2"
491 dependencies = [
492 "bytes",
493 "futures-core",
@@ -484,9 +504,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
504
505 [[package]]
506 name = "hyper"
487 -version = "1.10.1"
507 +version = "1.11.0"
508 source = "registry+https://github.com/rust-lang/crates.io-index"
489 -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
509 +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72"
510 dependencies = [
511 "atomic-waker",
512 "bytes",
@@ -715,9 +735,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
735
736 [[package]]
737 name = "libc"
718 -version = "0.2.186"
738 +version = "0.2.189"
739 source = "registry+https://github.com/rust-lang/crates.io-index"
720 -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
740 +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
741
742 [[package]]
743 name = "libloading"
@@ -782,7 +802,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
802 dependencies = [
803 "proc-macro2",
804 "quote",
785 - "syn 2.0.118",
805 + "syn 2.0.119",
806 ]
807
808 [[package]]
@@ -802,9 +822,9 @@ dependencies = [
822
823 [[package]]
824 name = "memchr"
805 -version = "2.8.2"
825 +version = "2.8.3"
826 source = "registry+https://github.com/rust-lang/crates.io-index"
807 -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
827 +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
828
829 [[package]]
830 name = "minimal-lexical"
@@ -814,9 +834,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
834
835 [[package]]
836 name = "mio"
817 -version = "1.2.1"
837 +version = "1.2.2"
838 source = "registry+https://github.com/rust-lang/crates.io-index"
819 -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
839 +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427"
840 dependencies = [
841 "libc",
842 "wasi",
@@ -890,15 +910,6 @@ dependencies = [
910 "zerovec",
911 ]
912
893 -[[package]]
894 -name = "ppv-lite86"
895 -version = "0.2.21"
896 -source = "registry+https://github.com/rust-lang/crates.io-index"
897 -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
898 -dependencies = [
899 - "zerocopy",
900 -]
901 -
913 [[package]]
914 name = "proc-macro-error"
915 version = "1.0.4"
@@ -925,9 +936,9 @@ dependencies = [
936
937 [[package]]
938 name = "proc-macro2"
928 -version = "1.0.106"
939 +version = "1.0.107"
940 source = "registry+https://github.com/rust-lang/crates.io-index"
930 -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
941 +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
942 dependencies = [
943 "unicode-ident",
944 ]
@@ -954,14 +965,15 @@ dependencies = [
965
966 [[package]]
967 name = "quinn-proto"
957 -version = "0.11.15"
968 +version = "0.11.16"
969 source = "registry+https://github.com/rust-lang/crates.io-index"
959 -checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e"
970 +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
971 dependencies = [
972 "bytes",
962 - "getrandom 0.3.4",
973 + "getrandom 0.4.3",
974 "lru-slab",
975 "rand",
976 + "rand_pcg",
977 "ring",
978 "rustc-hash",
979 "rustls",
@@ -975,60 +987,57 @@ dependencies = [
987
988 [[package]]
989 name = "quinn-udp"
978 -version = "0.5.14"
990 +version = "0.5.15"
991 source = "registry+https://github.com/rust-lang/crates.io-index"
980 -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
992 +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
993 dependencies = [
994 "cfg_aliases",
995 "libc",
996 "once_cell",
997 "socket2",
998 "tracing",
987 - "windows-sys 0.60.2",
999 + "windows-sys 0.61.2",
1000 ]
1001
1002 [[package]]
1003 name = "quote"
992 -version = "1.0.46"
1004 +version = "1.0.47"
1005 source = "registry+https://github.com/rust-lang/crates.io-index"
994 -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
1006 +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
1007 dependencies = [
1008 "proc-macro2",
1009 ]
1010
1011 [[package]]
1012 name = "r-efi"
1001 -version = "5.3.0"
1013 +version = "6.0.0"
1014 source = "registry+https://github.com/rust-lang/crates.io-index"
1003 -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1015 +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
1016
1017 [[package]]
1018 name = "rand"
1007 -version = "0.9.4"
1019 +version = "0.10.2"
1020 source = "registry+https://github.com/rust-lang/crates.io-index"
1009 -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
1021 +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
1022 dependencies = [
1011 - "rand_chacha",
1023 + "chacha20",
1024 + "getrandom 0.4.3",
1025 "rand_core",
1026 ]
1027
1028 [[package]]
1016 -name = "rand_chacha"
1017 -version = "0.9.0"
1029 +name = "rand_core"
1030 +version = "0.10.1"
1031 source = "registry+https://github.com/rust-lang/crates.io-index"
1019 -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
1020 -dependencies = [
1021 - "ppv-lite86",
1022 - "rand_core",
1023 -]
1032 +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
1033
1034 [[package]]
1026 -name = "rand_core"
1027 -version = "0.9.5"
1035 +name = "rand_pcg"
1036 +version = "0.10.2"
1037 source = "registry+https://github.com/rust-lang/crates.io-index"
1029 -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
1038 +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
1039 dependencies = [
1031 - "getrandom 0.3.4",
1040 + "rand_core",
1041 ]
1042
1043 [[package]]
@@ -1052,7 +1061,7 @@ dependencies = [
1061 "quote",
1062 "regex",
1063 "shell-words",
1055 - "syn 2.0.118",
1064 + "syn 2.0.119",
1065 ]
1066
1067 [[package]]
@@ -1063,9 +1072,9 @@ checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb"
1072
1073 [[package]]
1074 name = "regex"
1066 -version = "1.12.4"
1075 +version = "1.13.1"
1076 source = "registry+https://github.com/rust-lang/crates.io-index"
1068 -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
1077 +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
1078 dependencies = [
1079 "aho-corasick",
1080 "memchr",
@@ -1075,9 +1084,9 @@ dependencies = [
1084
1085 [[package]]
1086 name = "regex-automata"
1078 -version = "0.4.14"
1087 +version = "0.4.16"
1088 source = "registry+https://github.com/rust-lang/crates.io-index"
1080 -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
1089 +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad"
1090 dependencies = [
1091 "aho-corasick",
1092 "memchr",
@@ -1145,15 +1154,15 @@ dependencies = [
1154
1155 [[package]]
1156 name = "rustc-hash"
1148 -version = "2.1.2"
1157 +version = "2.1.3"
1158 source = "registry+https://github.com/rust-lang/crates.io-index"
1150 -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
1159 +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
1160
1161 [[package]]
1162 name = "rustls"
1154 -version = "0.23.41"
1163 +version = "0.23.43"
1164 source = "registry+https://github.com/rust-lang/crates.io-index"
1156 -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
1165 +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
1166 dependencies = [
1167 "once_cell",
1168 "ring",
@@ -1177,9 +1186,9 @@ dependencies = [
1186
1187 [[package]]
1188 name = "rustls-pki-types"
1180 -version = "1.14.1"
1189 +version = "1.15.1"
1190 source = "registry+https://github.com/rust-lang/crates.io-index"
1182 -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9"
1191 +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
1192 dependencies = [
1193 "web-time",
1194 "zeroize",
@@ -1198,9 +1207,9 @@ dependencies = [
1207
1208 [[package]]
1209 name = "rustversion"
1201 -version = "1.0.22"
1210 +version = "1.0.23"
1211 source = "registry+https://github.com/rust-lang/crates.io-index"
1203 -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1212 +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
1213
1214 [[package]]
1215 name = "ryu"
@@ -1238,7 +1247,7 @@ version = "3.7.0"
1247 source = "registry+https://github.com/rust-lang/crates.io-index"
1248 checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
1249 dependencies = [
1241 - "bitflags 2.13.0",
1250 + "bitflags 2.13.1",
1251 "core-foundation",
1252 "core-foundation-sys",
1253 "libc",
@@ -1263,9 +1272,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
1272
1273 [[package]]
1274 name = "serde"
1266 -version = "1.0.228"
1275 +version = "1.0.229"
1276 source = "registry+https://github.com/rust-lang/crates.io-index"
1268 -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1277 +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
1278 dependencies = [
1279 "serde_core",
1280 "serde_derive",
@@ -1273,29 +1282,29 @@ dependencies = [
1282
1283 [[package]]
1284 name = "serde_core"
1276 -version = "1.0.228"
1285 +version = "1.0.229"
1286 source = "registry+https://github.com/rust-lang/crates.io-index"
1278 -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1287 +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
1288 dependencies = [
1289 "serde_derive",
1290 ]
1291
1292 [[package]]
1293 name = "serde_derive"
1285 -version = "1.0.228"
1294 +version = "1.0.229"
1295 source = "registry+https://github.com/rust-lang/crates.io-index"
1287 -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1296 +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
1297 dependencies = [
1298 "proc-macro2",
1299 "quote",
1291 - "syn 2.0.118",
1300 + "syn 3.0.3",
1301 ]
1302
1303 [[package]]
1304 name = "serde_json"
1296 -version = "1.0.150"
1305 +version = "1.0.151"
1306 source = "registry+https://github.com/rust-lang/crates.io-index"
1298 -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
1307 +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
1308 dependencies = [
1309 "itoa",
1310 "memchr",
@@ -1306,13 +1315,13 @@ dependencies = [
1315
1316 [[package]]
1317 name = "serde_repr"
1309 -version = "0.1.20"
1318 +version = "0.1.21"
1319 source = "registry+https://github.com/rust-lang/crates.io-index"
1311 -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
1320 +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906"
1321 dependencies = [
1322 "proc-macro2",
1323 "quote",
1315 - "syn 2.0.118",
1324 + "syn 3.0.3",
1325 ]
1326
1327 [[package]]
@@ -1368,7 +1377,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
1377
1378 [[package]]
1379 name = "smbcloud-email-sdk"
1371 -version = "0.4.7"
1380 +version = "0.4.13"
1381 dependencies = [
1382 "log",
1383 "reqwest",
@@ -1382,7 +1391,7 @@ dependencies = [
1391
1392 [[package]]
1393 name = "smbcloud-model"
1385 -version = "0.4.7"
1394 +version = "0.4.13"
1395 dependencies = [
1396 "chrono",
1397 "log",
@@ -1398,9 +1407,9 @@ dependencies = [
1407
1408 [[package]]
1409 name = "smbcloud-network"
1401 -version = "0.4.7"
1410 +version = "0.4.13"
1411 dependencies = [
1403 - "clap 4.6.1",
1412 + "clap 4.6.4",
1413 "log",
1414 "reqwest",
1415 "serde",
@@ -1411,9 +1420,9 @@ dependencies = [
1420
1421 [[package]]
1422 name = "socket2"
1414 -version = "0.6.4"
1423 +version = "0.6.5"
1424 source = "registry+https://github.com/rust-lang/crates.io-index"
1416 -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
1425 +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
1426 dependencies = [
1427 "libc",
1428 "windows-sys 0.61.2",
@@ -1518,7 +1527,7 @@ dependencies = [
1527 "heck 0.5.0",
1528 "proc-macro2",
1529 "quote",
1521 - "syn 2.0.118",
1530 + "syn 2.0.119",
1531 ]
1532
1533 [[package]]
@@ -1540,9 +1549,20 @@ dependencies = [
1549
1550 [[package]]
1551 name = "syn"
1543 -version = "2.0.118"
1552 +version = "2.0.119"
1553 source = "registry+https://github.com/rust-lang/crates.io-index"
1545 -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
1554 +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
1555 +dependencies = [
1556 + "proc-macro2",
1557 + "quote",
1558 + "unicode-ident",
1559 +]
1560 +
1561 +[[package]]
1562 +name = "syn"
1563 +version = "3.0.3"
1564 +source = "registry+https://github.com/rust-lang/crates.io-index"
1565 +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
1566 dependencies = [
1567 "proc-macro2",
1568 "quote",
@@ -1566,7 +1586,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1586 dependencies = [
1587 "proc-macro2",
1588 "quote",
1569 - "syn 2.0.118",
1589 + "syn 2.0.119",
1590 ]
1591
1592 [[package]]
@@ -1580,29 +1600,29 @@ dependencies = [
1600
1601 [[package]]
1602 name = "thiserror"
1583 -version = "2.0.18"
1603 +version = "2.0.19"
1604 source = "registry+https://github.com/rust-lang/crates.io-index"
1585 -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
1605 +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
1606 dependencies = [
1607 "thiserror-impl",
1608 ]
1609
1610 [[package]]
1611 name = "thiserror-impl"
1592 -version = "2.0.18"
1612 +version = "2.0.19"
1613 source = "registry+https://github.com/rust-lang/crates.io-index"
1594 -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
1614 +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
1615 dependencies = [
1616 "proc-macro2",
1617 "quote",
1598 - "syn 2.0.118",
1618 + "syn 3.0.3",
1619 ]
1620
1621 [[package]]
1622 name = "thread_local"
1603 -version = "1.1.9"
1623 +version = "1.1.10"
1624 source = "registry+https://github.com/rust-lang/crates.io-index"
1605 -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
1625 +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070"
1626 dependencies = [
1627 "cfg-if",
1628 ]
@@ -1619,9 +1639,9 @@ dependencies = [
1639
1640 [[package]]
1641 name = "tinyvec"
1622 -version = "1.11.0"
1642 +version = "1.12.0"
1643 source = "registry+https://github.com/rust-lang/crates.io-index"
1624 -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
1644 +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f"
1645 dependencies = [
1646 "tinyvec_macros",
1647 ]
@@ -1634,9 +1654,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1654
1655 [[package]]
1656 name = "tokio"
1637 -version = "1.52.3"
1657 +version = "1.53.1"
1658 source = "registry+https://github.com/rust-lang/crates.io-index"
1639 -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
1659 +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
1660 dependencies = [
1661 "bytes",
1662 "libc",
@@ -1677,7 +1697,7 @@ version = "0.6.11"
1697 source = "registry+https://github.com/rust-lang/crates.io-index"
1698 checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
1699 dependencies = [
1680 - "bitflags 2.13.0",
1700 + "bitflags 2.13.1",
1701 "bytes",
1702 "futures-util",
1703 "http",
@@ -1720,7 +1740,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
1740 dependencies = [
1741 "proc-macro2",
1742 "quote",
1723 - "syn 2.0.118",
1743 + "syn 2.0.119",
1744 ]
1745
1746 [[package]]
@@ -1779,7 +1799,7 @@ dependencies = [
1799 "quote",
1800 "state",
1801 "structopt",
1782 - "syn 2.0.118",
1802 + "syn 2.0.119",
1803 "tsync-macro",
1804 "walkdir",
1805 ]
@@ -1881,15 +1901,6 @@ version = "0.11.1+wasi-snapshot-preview1"
1901 source = "registry+https://github.com/rust-lang/crates.io-index"
1902 checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1903
1884 -[[package]]
1885 -name = "wasip2"
1886 -version = "1.0.4+wasi-0.2.12"
1887 -source = "registry+https://github.com/rust-lang/crates.io-index"
1888 -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
1889 -dependencies = [
1890 - "wit-bindgen",
1891 -]
1892 -
1904 [[package]]
1905 name = "wasm-bindgen"
1906 version = "0.2.126"
@@ -1932,7 +1943,7 @@ dependencies = [
1943 "bumpalo",
1944 "proc-macro2",
1945 "quote",
1935 - "syn 2.0.118",
1946 + "syn 2.0.119",
1947 "wasm-bindgen-shared",
1948 ]
1949
@@ -1967,9 +1978,9 @@ dependencies = [
1978
1979 [[package]]
1980 name = "webpki-roots"
1970 -version = "1.0.8"
1981 +version = "1.0.9"
1982 source = "registry+https://github.com/rust-lang/crates.io-index"
1972 -checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf"
1983 +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
1984 dependencies = [
1985 "rustls-pki-types",
1986 ]
@@ -2035,7 +2046,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
2046 dependencies = [
2047 "proc-macro2",
2048 "quote",
2038 - "syn 2.0.118",
2049 + "syn 2.0.119",
2050 ]
2051
2052 [[package]]
@@ -2046,7 +2057,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
2057 dependencies = [
2058 "proc-macro2",
2059 "quote",
2049 - "syn 2.0.118",
2060 + "syn 2.0.119",
2061 ]
2062
2063 [[package]]
@@ -2082,15 +2093,6 @@ dependencies = [
2093 "windows-targets 0.52.6",
2094 ]
2095
2085 -[[package]]
2086 -name = "windows-sys"
2087 -version = "0.60.2"
2088 -source = "registry+https://github.com/rust-lang/crates.io-index"
2089 -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
2090 -dependencies = [
2091 - "windows-targets 0.53.5",
2092 -]
2093 -
2096 [[package]]
2097 name = "windows-sys"
2098 version = "0.61.2"
@@ -2124,30 +2126,13 @@ dependencies = [
2126 "windows_aarch64_gnullvm 0.52.6",
2127 "windows_aarch64_msvc 0.52.6",
2128 "windows_i686_gnu 0.52.6",
2127 - "windows_i686_gnullvm 0.52.6",
2129 + "windows_i686_gnullvm",
2130 "windows_i686_msvc 0.52.6",
2131 "windows_x86_64_gnu 0.52.6",
2132 "windows_x86_64_gnullvm 0.52.6",
2133 "windows_x86_64_msvc 0.52.6",
2134 ]
2135
2134 -[[package]]
2135 -name = "windows-targets"
2136 -version = "0.53.5"
2137 -source = "registry+https://github.com/rust-lang/crates.io-index"
2138 -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
2139 -dependencies = [
2140 - "windows-link",
2141 - "windows_aarch64_gnullvm 0.53.1",
2142 - "windows_aarch64_msvc 0.53.1",
2143 - "windows_i686_gnu 0.53.1",
2144 - "windows_i686_gnullvm 0.53.1",
2145 - "windows_i686_msvc 0.53.1",
2146 - "windows_x86_64_gnu 0.53.1",
2147 - "windows_x86_64_gnullvm 0.53.1",
2148 - "windows_x86_64_msvc 0.53.1",
2149 -]
2150 -
2136 [[package]]
2137 name = "windows_aarch64_gnullvm"
2138 version = "0.48.5"
@@ -2160,12 +2145,6 @@ version = "0.52.6"
2145 source = "registry+https://github.com/rust-lang/crates.io-index"
2146 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
2147
2163 -[[package]]
2164 -name = "windows_aarch64_gnullvm"
2165 -version = "0.53.1"
2166 -source = "registry+https://github.com/rust-lang/crates.io-index"
2167 -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
2168 -
2148 [[package]]
2149 name = "windows_aarch64_msvc"
2150 version = "0.48.5"
@@ -2178,12 +2157,6 @@ version = "0.52.6"
2157 source = "registry+https://github.com/rust-lang/crates.io-index"
2158 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
2159
2181 -[[package]]
2182 -name = "windows_aarch64_msvc"
2183 -version = "0.53.1"
2184 -source = "registry+https://github.com/rust-lang/crates.io-index"
2185 -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
2186 -
2160 [[package]]
2161 name = "windows_i686_gnu"
2162 version = "0.48.5"
@@ -2196,24 +2169,12 @@ version = "0.52.6"
2169 source = "registry+https://github.com/rust-lang/crates.io-index"
2170 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
2171
2199 -[[package]]
2200 -name = "windows_i686_gnu"
2201 -version = "0.53.1"
2202 -source = "registry+https://github.com/rust-lang/crates.io-index"
2203 -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
2204 -
2172 [[package]]
2173 name = "windows_i686_gnullvm"
2174 version = "0.52.6"
2175 source = "registry+https://github.com/rust-lang/crates.io-index"
2176 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
2177
2211 -[[package]]
2212 -name = "windows_i686_gnullvm"
2213 -version = "0.53.1"
2214 -source = "registry+https://github.com/rust-lang/crates.io-index"
2215 -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
2216 -
2178 [[package]]
2179 name = "windows_i686_msvc"
2180 version = "0.48.5"
@@ -2226,12 +2187,6 @@ version = "0.52.6"
2187 source = "registry+https://github.com/rust-lang/crates.io-index"
2188 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2189
2229 -[[package]]
2230 -name = "windows_i686_msvc"
2231 -version = "0.53.1"
2232 -source = "registry+https://github.com/rust-lang/crates.io-index"
2233 -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
2234 -
2190 [[package]]
2191 name = "windows_x86_64_gnu"
2192 version = "0.48.5"
@@ -2244,12 +2199,6 @@ version = "0.52.6"
2199 source = "registry+https://github.com/rust-lang/crates.io-index"
2200 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
2201
2247 -[[package]]
2248 -name = "windows_x86_64_gnu"
2249 -version = "0.53.1"
2250 -source = "registry+https://github.com/rust-lang/crates.io-index"
2251 -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
2252 -
2202 [[package]]
2203 name = "windows_x86_64_gnullvm"
2204 version = "0.48.5"
@@ -2262,12 +2211,6 @@ version = "0.52.6"
2211 source = "registry+https://github.com/rust-lang/crates.io-index"
2212 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
2213
2265 -[[package]]
2266 -name = "windows_x86_64_gnullvm"
2267 -version = "0.53.1"
2268 -source = "registry+https://github.com/rust-lang/crates.io-index"
2269 -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
2270 -
2214 [[package]]
2215 name = "windows_x86_64_msvc"
2216 version = "0.48.5"
@@ -2280,18 +2223,6 @@ version = "0.52.6"
2223 source = "registry+https://github.com/rust-lang/crates.io-index"
2224 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2225
2283 -[[package]]
2284 -name = "windows_x86_64_msvc"
2285 -version = "0.53.1"
2286 -source = "registry+https://github.com/rust-lang/crates.io-index"
2287 -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
2288 -
2289 -[[package]]
2290 -name = "wit-bindgen"
2291 -version = "0.57.1"
2292 -source = "registry+https://github.com/rust-lang/crates.io-index"
2293 -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
2294 -
2226 [[package]]
2227 name = "writeable"
2228 version = "0.6.3"
@@ -2317,30 +2248,10 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
2248 dependencies = [
2249 "proc-macro2",
2250 "quote",
2320 - "syn 2.0.118",
2251 + "syn 2.0.119",
2252 "synstructure",
2253 ]
2254
2324 -[[package]]
2325 -name = "zerocopy"
2326 -version = "0.8.52"
2327 -source = "registry+https://github.com/rust-lang/crates.io-index"
2328 -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
2329 -dependencies = [
2330 - "zerocopy-derive",
2331 -]
2332 -
2333 -[[package]]
2334 -name = "zerocopy-derive"
2335 -version = "0.8.52"
2336 -source = "registry+https://github.com/rust-lang/crates.io-index"
2337 -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
2338 -dependencies = [
2339 - "proc-macro2",
2340 - "quote",
2341 - "syn 2.0.118",
2342 -]
2343 -
2255 [[package]]
2256 name = "zerofrom"
2257 version = "0.1.8"
@@ -2358,7 +2269,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
2269 dependencies = [
2270 "proc-macro2",
2271 "quote",
2361 - "syn 2.0.118",
2272 + "syn 2.0.119",
2273 "synstructure",
2274 ]
2275
@@ -2398,11 +2309,11 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
2309 dependencies = [
2310 "proc-macro2",
2311 "quote",
2401 - "syn 2.0.118",
2312 + "syn 2.0.119",
2313 ]
2314
2315 [[package]]
2316 name = "zmij"
2406 -version = "1.0.21"
2317 +version = "1.0.23"
2318 source = "registry+https://github.com/rust-lang/crates.io-index"
2408 -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
2319 +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
sdk/gems/email/Gemfile.lock
+1 -1
@@ -1,7 +1,7 @@
1 PATH
2 remote: .
3 specs:
4 - smbcloud-email (0.4.7)
4 + smbcloud-email (0.4.13)
5 json
6 rb_sys (~> 0.9.91)
7
sdk/gems/email/ext/email/Cargo.toml
+1 -1
@@ -1,6 +1,6 @@
1 [package]
2 name = "email"
3 -version = "0.4.7"
3 +version = "0.4.13"
4 edition = "2024"
5 authors = ["Seto Elkahfi <seto@smbcloud.xyz>"]
6 publish = false
sdk/gems/email/lib/email/version.rb
+1 -1
@@ -1,5 +1,5 @@
1 # frozen_string_literal: true
2
3 module Email
4 - VERSION = '0.4.7'
4 + VERSION = '0.4.13'
5 end
server-xcrs.json new
+52
@@ -0,0 +1,52 @@
1 +{
2 + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3 + "name": "io.github.smbcloudXYZ/xcrs",
4 + "title": "XCRS Xcode Simulator Tools",
5 + "description": "Rust-native Xcode command-line and Apple simulator automation tools exposed through MCP.",
6 + "version": "0.4.13",
7 + "websiteUrl": "https://github.com/smbcloudXYZ/smbcloud-cli/tree/main/crates/xcrs",
8 + "repository": {
9 + "url": "https://github.com/smbcloudXYZ/smbcloud-cli",
10 + "source": "github",
11 + "id": "597171611",
12 + "subfolder": "crates/xcrs"
13 + },
14 + "packages": [
15 + {
16 + "registryType": "cargo",
17 + "registryBaseUrl": "https://crates.io",
18 + "identifier": "xcrs",
19 + "version": "0.4.13",
20 + "transport": {
21 + "type": "stdio"
22 + },
23 + "packageArguments": [
24 + {
25 + "type": "named",
26 + "name": "--mcp",
27 + "description": "Run the XCRS server as an MCP server over stdio.",
28 + "isRequired": true
29 + }
30 + ]
31 + }
32 + ],
33 + "_meta": {
34 + "io.modelcontextprotocol.registry/publisher-provided": {
35 + "categories": [
36 + "developer-tools",
37 + "xcode",
38 + "ios",
39 + "simulator"
40 + ],
41 + "keywords": [
42 + "Xcode",
43 + "iOS simulator",
44 + "tvOS",
45 + "visionOS",
46 + "watchOS",
47 + "macOS",
48 + "ControlKit"
49 + ]
50 + }
51 + }
52 +}