feat(onboarding): multipart file upload for blob artifacts

Add a real file-upload path so PLC projects (and other blob artifacts:
firmware images, source archives, mobile packages) can be delivered to
the agent instead of referencing a local path.

- agent: POST /api/v1/targets/{id}/artifacts/upload (axum multipart);
  stores bytes under {artifact_store_base_path}/uploads/{id}/... and
  $push-es the artifact (with stored_path + size_bytes) onto the target.
- dashboard: upload_target_artifact server fn (reqwest multipart) + wizard
  file input for blob artifact kinds, with a PLC format selector.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Sharang Parnerkar
2026-07-16 11:28:35 +02:00
co-authored by Claude Opus 4.8
parent 6d02b138c6
commit bd80ccef49
6 changed files with 291 additions and 39 deletions
+2 -2
View File
@@ -34,7 +34,7 @@ hex = { workspace = true }
uuid = { workspace = true }
secrecy = { workspace = true }
regex = { workspace = true }
axum = "0.8"
axum = { version = "0.8", features = ["multipart"] }
tower-http = { version = "0.6", features = ["cors", "trace", "set-header"] }
git2 = "0.20"
octocrab = "0.44"
@@ -65,5 +65,5 @@ tokio = { workspace = true }
mongodb = { workspace = true }
uuid = { workspace = true }
secrecy = { workspace = true }
axum = "0.8"
axum = { version = "0.8", features = ["multipart"] }
tower-http = { version = "0.6", features = ["cors"] }