@memohai/cloud-runtime 0.1.0 → 2026.9.12-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Connects your machine to [Memoh Cloud](https://app.memoh.net) as a remote
4
4
  runtime. This is the Cloud distribution of the open-source
5
- [`@memohai/runtime`](https://github.com/memohai/Memoh/tree/main/packages/runtime)
5
+ [`@memohai/runtime`](https://github.com/felinics/Memoh/tree/main/packages/runtime)
6
6
  CLI: identical behaviour, with the Cloud endpoint preconfigured.
7
7
 
8
8
  ## Usage
@@ -28,7 +28,7 @@ same as upstream.
28
28
  ## License and source
29
29
 
30
30
  AGPL-3.0-only. The published artifact bundles the upstream runtime
31
- implementation from [memohai/Memoh](https://github.com/memohai/Memoh);
31
+ implementation from [felinics/Memoh](https://github.com/felinics/Memoh);
32
32
  `memoh-cloud-runtime --version` prints the exact upstream commit inside your
33
33
  build. The Cloud overlay (`src/`) and the build script (`scripts/`) ship in
34
34
  this tarball; building from source requires the Memoh monorepo checked out
package/dist/bridge.proto CHANGED
@@ -2,7 +2,7 @@ syntax = "proto3";
2
2
 
3
3
  package bridgepb;
4
4
 
5
- option go_package = "github.com/memohai/memoh/internal/workspace/bridgepb";
5
+ option go_package = "github.com/felinics/memoh/internal/workspace/bridgepb";
6
6
 
7
7
  service ContainerService {
8
8
  rpc ReadFile(ReadFileRequest) returns (ReadFileResponse);
@@ -16,6 +16,12 @@ service ContainerService {
16
16
  rpc ReverseHTTP(stream ReverseHTTPFrame) returns (stream ReverseHTTPFrame);
17
17
  rpc ReadRaw(ReadRawRequest) returns (stream DataChunk);
18
18
  rpc WriteRaw(stream WriteRawChunk) returns (WriteRawResponse);
19
+ // These anchored variants are security boundaries for ACP session state.
20
+ // The server opens root and every relative_path component without following
21
+ // symbolic links. WriteRawNoFollow creates a new regular file and fails if
22
+ // the final component already exists.
23
+ rpc ReadRawNoFollow(ReadRawNoFollowRequest) returns (stream DataChunk);
24
+ rpc WriteRawNoFollow(stream WriteRawNoFollowChunk) returns (WriteRawResponse);
19
25
  rpc DeleteFile(DeleteFileRequest) returns (DeleteFileResponse);
20
26
  }
21
27
 
@@ -44,6 +50,11 @@ message ListDirRequest {
44
50
  int32 offset = 3;
45
51
  int32 limit = 4;
46
52
  int32 collapse_threshold = 5;
53
+ // max_entries, when positive, makes the bridge STOP TRAVERSING and fail
54
+ // with ResourceExhausted once more than max_entries entries exist, bounding
55
+ // server-side memory before collection instead of after. Zero keeps the
56
+ // unbounded pre-existing behavior for general callers.
57
+ int32 max_entries = 6;
47
58
  }
48
59
 
49
60
  message FileEntry {
@@ -153,12 +164,29 @@ message DataChunk {
153
164
  message WriteRawChunk {
154
165
  string path = 1;
155
166
  bytes data = 2;
167
+ // abort tells the bridge the sender's source failed mid-stream: discard the
168
+ // temporary file and fail the write instead of committing a partial target.
169
+ // The sender then waits for the terminal status, so cleanup is synchronous.
170
+ bool abort = 3;
156
171
  }
157
172
 
158
173
  message WriteRawResponse {
159
174
  int64 bytes_written = 1;
160
175
  }
161
176
 
177
+ message ReadRawNoFollowRequest {
178
+ string root = 1;
179
+ string relative_path = 2;
180
+ }
181
+
182
+ message WriteRawNoFollowChunk {
183
+ string root = 1;
184
+ string relative_path = 2;
185
+ bytes data = 3;
186
+ // abort mirrors WriteRawChunk.abort for the anchored variant.
187
+ bool abort = 4;
188
+ }
189
+
162
190
  message DeleteFileRequest {
163
191
  string path = 1;
164
192
  bool recursive = 2;