@cofy-x/axern-sdk 0.6.2 → 0.7.0

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.
Files changed (60) hide show
  1. package/README.md +26 -65
  2. package/dist/client/index.d.ts +10 -11
  3. package/dist/client/index.js +64 -68
  4. package/dist/config/index.d.ts +0 -1
  5. package/dist/config/index.js +2 -4
  6. package/dist/generated/proto.js +0 -1
  7. package/dist/index.d.ts +4 -5
  8. package/dist/index.js +1 -2
  9. package/dist/node/attached_process.d.ts +1 -2
  10. package/dist/node/attached_process.js +12 -26
  11. package/dist/node/client.d.ts +4 -6
  12. package/dist/node/client.js +2 -9
  13. package/dist/node/exec.d.ts +1 -3
  14. package/dist/node/exec.js +0 -43
  15. package/dist/proto/axern/control/admin/v1/access.proto +12 -5
  16. package/dist/proto/axern/control/admin/v1/audit.proto +14 -16
  17. package/dist/proto/axern/control/admin/v1/node.proto +23 -67
  18. package/dist/proto/axern/control/admin/v1/reliability.proto +11 -78
  19. package/dist/proto/axern/control/capability/v1/capability.proto +34 -94
  20. package/dist/proto/axern/control/common/v1/common.proto +29 -102
  21. package/dist/proto/axern/control/environment/v1/environment.proto +42 -26
  22. package/dist/proto/axern/control/gateway/v1/gateway.proto +18 -59
  23. package/dist/proto/axern/control/identity/v1/identity.proto +1 -1
  24. package/dist/proto/axern/control/namespace/v1/namespace.proto +2 -3
  25. package/dist/proto/axern/control/quota/v1/quota.proto +22 -32
  26. package/dist/proto/axern/control/run/v1/run.proto +26 -22
  27. package/dist/proto/axern/control/secret/v1/secret.proto +1 -3
  28. package/dist/proto/axern/control/tunnel/v1/tunnel.proto +18 -25
  29. package/dist/proto/axern/node/sandbox/v1/node.proto +59 -375
  30. package/dist/sandbox/index.d.ts +3 -9
  31. package/dist/sandbox/index.js +13 -22
  32. package/dist/sandbox/lifecycle.d.ts +1 -1
  33. package/dist/sandbox/lifecycle.js +55 -17
  34. package/dist/tunnel/connector.js +1 -1
  35. package/dist/tunnel/control.d.ts +0 -1
  36. package/dist/tunnel/control.js +0 -1
  37. package/dist/tunnel/runtime.d.ts +0 -1
  38. package/dist/tunnel/runtime.js +0 -1
  39. package/dist/tunnel/types.d.ts +0 -1
  40. package/dist/types.d.ts +4 -21
  41. package/dist/types.js +1 -3
  42. package/dist/version.d.ts +1 -1
  43. package/dist/version.js +1 -1
  44. package/package.json +1 -1
  45. package/dist/proto/axern/control/admin/v1/allocation_lifecycle.proto +0 -91
  46. package/dist/proto/axern/control/admin/v1/service.proto +0 -18
  47. package/dist/proto/axern/control/admin/v1/storage.proto +0 -81
  48. package/dist/proto/axern/control/agentprofile/v1/agent_profile.proto +0 -169
  49. package/dist/proto/axern/control/catalog/v1/catalog.proto +0 -127
  50. package/dist/proto/axern/control/function/v1/function.proto +0 -130
  51. package/dist/proto/axern/control/function/v1/function_types.proto +0 -233
  52. package/dist/proto/axern/control/node/v1/node_control.proto +0 -443
  53. package/dist/proto/axern/control/rollout/v1/rollout.proto +0 -344
  54. package/dist/proto/axern/control/service/v1/service.proto +0 -96
  55. package/dist/proto/axern/control/service/v1/service_event.proto +0 -47
  56. package/dist/proto/axern/control/service/v1/service_replica.proto +0 -78
  57. package/dist/proto/axern/control/service/v1/service_types.proto +0 -155
  58. package/dist/proto/axern/control/storage/v1/storage.proto +0 -107
  59. package/dist/proto/axern/control/storage/v1/storage_types.proto +0 -125
  60. package/dist/proto/axern/data/artifact/v1/artifact.proto +0 -19
@@ -1,443 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package axern.control.node.v1;
4
-
5
- option go_package = "github.com/cofy-x/axern/sdk/go/gen/axern/control/node/v1;nodev1";
6
-
7
- import "axern/control/common/v1/common.proto";
8
- import "axern/control/capability/v1/capability.proto";
9
- import "axern/control/tunnel/v1/tunnel.proto";
10
- import "google/protobuf/timestamp.proto";
11
-
12
- enum RootfsType {
13
- ROOTFS_TYPE_UNSPECIFIED = 0;
14
- ROOTFS_TYPE_LOCAL = 1;
15
- ROOTFS_TYPE_IMAGE = 2;
16
- ROOTFS_TYPE_S3 = 3;
17
- }
18
-
19
- enum MountType {
20
- MOUNT_TYPE_UNSPECIFIED = 0;
21
- MOUNT_TYPE_LOCAL = 1;
22
- MOUNT_TYPE_OCI = 2;
23
- MOUNT_TYPE_NYDUS = 3;
24
- MOUNT_TYPE_OSS = 4;
25
- MOUNT_TYPE_EROFS = 5;
26
- }
27
-
28
- enum ComponentState {
29
- COMPONENT_STATE_UNSPECIFIED = 0;
30
- COMPONENT_STATE_READY = 1;
31
- COMPONENT_STATE_WARMING = 2;
32
- COMPONENT_STATE_DEGRADED = 3;
33
- COMPONENT_STATE_ERROR = 4;
34
- COMPONENT_STATE_DISABLED = 5;
35
- }
36
-
37
- enum NodeState {
38
- NODE_STATE_UNSPECIFIED = 0;
39
- NODE_STATE_READY = 1;
40
- NODE_STATE_DRAINING = 2;
41
- NODE_STATE_DISABLED = 3;
42
- NODE_STATE_UNREACHABLE = 4;
43
- }
44
-
45
- message PoolState {
46
- int32 using = 1;
47
- int32 idle = 2;
48
- int32 capacity = 3;
49
- int32 unavailable = 4;
50
- }
51
-
52
- message ResourcesSummary {
53
- int64 axnoded_committed_milli = 1;
54
- int64 axnoded_used_milli = 2;
55
- int64 axnoded_cpu_unbounded_count = 3;
56
- int64 axnoded_committed_bytes = 4;
57
- int64 axnoded_used_bytes = 5;
58
- int64 axnoded_memory_unbounded_count = 6;
59
- int64 axnoded_ephemeral_storage_committed_bytes = 7;
60
- int64 axnoded_ephemeral_storage_used_bytes = 8;
61
- int64 axnoded_ephemeral_storage_unbounded_count = 9;
62
- }
63
-
64
- // NodeMemoryBudget is the node-observed scheduling boundary. The system
65
- // reserve covers node-local control processes and is never charged to a
66
- // namespace or allocation.
67
- enum NodeMemoryBudgetMode {
68
- NODE_MEMORY_BUDGET_MODE_UNSPECIFIED = 0;
69
- // Capacity and internal usage are observed from the delegated cgroup v2
70
- // domain. Runtime-specific hard-limit capabilities remain separate facts.
71
- NODE_MEMORY_BUDGET_MODE_CGROUP_V2 = 1;
72
- // Local-development capacity is observed from the configured node resource
73
- // source without claiming a cgroup hard boundary.
74
- NODE_MEMORY_BUDGET_MODE_DISABLED_DEV = 2;
75
- }
76
-
77
- message NodeMemoryBudget {
78
- // Physical capacity reported by the selected node resource source. This is
79
- // a consistency/diagnostic fact and is never added to allocatable memory.
80
- int64 physical_capacity_bytes = 1;
81
- // The resource source's schedulable value before the Axern system reserve.
82
- int64 source_allocatable_bytes = 2;
83
- // A finite value further caps source_allocatable_bytes; zero with
84
- // delegated_root_limit_finite=false represents kernel `max`.
85
- int64 delegated_root_limit_bytes = 3;
86
- bool delegated_root_limit_finite = 4;
87
- int64 system_reserve_bytes = 5;
88
- int64 effective_allocatable_bytes = 6;
89
- int64 local_commitment_bytes = 7;
90
- int64 cleanup_debt_bytes = 8;
91
- int64 internal_current_bytes = 9;
92
- // Identity of the capacity domain. Production uses the boot-scoped cgroup
93
- // mount/root identity; disabled_dev uses a boot-scoped resource-source
94
- // identity and cannot satisfy runtime hard-limit requirements.
95
- string capacity_identity = 10;
96
- google.protobuf.Timestamp sampled_at = 11;
97
- int32 retiring_cgroup_count = 12;
98
- int64 oldest_retiring_age_seconds = 13;
99
- bool system_reserve_exhausted = 14;
100
- NodeMemoryBudgetMode mode = 15;
101
- }
102
-
103
- message PoolsSummary {
104
- PoolState cgroup = 1;
105
- PoolState interface = 2;
106
- // Required aggregate runtime capacity contract owned by axnoded.
107
- PoolState runtime_slots = 3;
108
- }
109
-
110
- message AxnodedSummary {
111
- ComponentState state = 1;
112
- bool ready = 2;
113
- int32 running_containers = 3;
114
- repeated string running_allocation_ids = 4;
115
- repeated string active_allocation_ids = 5;
116
- }
117
-
118
- message ImagemgrSummary {
119
- ComponentState state = 1;
120
- bool reachable = 2;
121
- int32 daemon_count = 3;
122
- int32 mounted_image_count = 4;
123
- int32 imported_image_count = 5;
124
- }
125
-
126
- message ImagefsdSummary {
127
- ComponentState state = 1;
128
- bool reachable = 2;
129
- bool chunkdb_present = 3;
130
- int64 chunk_count = 4;
131
- int64 chunkdb_used_bytes = 5;
132
- double chunkdb_usage_percent = 6;
133
- }
134
-
135
- message BpfNetSummary {
136
- ComponentState state = 1;
137
- bool enabled = 2;
138
- bool ready = 3;
139
- string mode = 4;
140
- bool needs_snat_fallback = 5;
141
- bool needs_full_dnat_fallback = 6;
142
- bool needs_localhost_compat = 7;
143
- }
144
-
145
- message VolumedSummary {
146
- ComponentState state = 1;
147
- bool reachable = 2;
148
- int32 published_volume_count = 3;
149
- google.protobuf.Timestamp last_reconcile_at = 4;
150
- string last_reconcile_error = 5;
151
- int32 last_reconcile_retained_count = 6;
152
- int32 last_reconcile_unpublished_count = 7;
153
- int32 last_reconcile_active_allocation_count = 8;
154
- int32 last_reconcile_stale_allocation_count = 9;
155
- int32 last_reconcile_invalid_volume_count = 10;
156
- }
157
-
158
- message NodeStorageSummary {
159
- string target = 1;
160
- int64 capacity_bytes = 2;
161
- int64 used_bytes = 3;
162
- int64 available_bytes = 4;
163
- int64 inodes_total = 5;
164
- int64 inodes_used = 6;
165
- int64 inodes_available = 7;
166
- bool collected = 8;
167
- string error = 9;
168
- int64 system_reserve_bytes = 10;
169
- int64 reserved_bytes = 11;
170
- int64 allocatable_bytes = 12;
171
- int64 active_reservations = 13;
172
- string filesystem_type = 14;
173
- string mount_identity = 15;
174
- int64 allocation_used_bytes = 16;
175
- bool unlinked_backing_usage_unknown = 17;
176
- }
177
-
178
- message ComponentsSummary {
179
- AxnodedSummary axnoded = 1;
180
- ImagemgrSummary imagemgr = 2;
181
- ImagefsdSummary imagefsd = 3;
182
- BpfNetSummary bpfnet = 4;
183
- VolumedSummary volumed = 5;
184
- }
185
-
186
- message LocalitySummary {
187
- string key = 1;
188
- RootfsType rootfs_type = 2;
189
- MountType mount_type = 3;
190
- bool mounted = 4;
191
- int32 retained_runtime_count = 5;
192
- int32 retained_rootfs_count = 6;
193
- int32 running_container_count = 7;
194
- bool nydus_daemon_alive = 8;
195
- int64 chunkdb_total_chunks = 9;
196
- int64 chunkdb_used_bytes = 10;
197
- int64 chunkdb_recent_access_age_secs = 11;
198
- int64 peer_healthy_count = 12;
199
- int64 peer_unhealthy_count = 13;
200
- int64 peer_hinted_count = 14;
201
- string environment_id = 15;
202
- }
203
-
204
- message NodeSummary {
205
- google.protobuf.Timestamp collected_at = 1;
206
- ResourcesSummary resources = 2;
207
- PoolsSummary pools = 3;
208
- ComponentsSummary components = 4;
209
- repeated LocalitySummary locality = 5;
210
- NodeState node_state = 6;
211
- map<string, string> labels = 7;
212
- axern.control.capability.v1.CapabilitySnapshot capability_snapshot = 8;
213
- axern.control.common.v1.ResourceQuantity capacity = 9;
214
- axern.control.common.v1.ResourceQuantity allocatable = 10;
215
- repeated NodeStorageSummary storage = 11;
216
- NodeMemoryBudget memory_budget = 12;
217
- }
218
-
219
- message RegisterNodeRequest {
220
- string node_id = 1;
221
- repeated string runtimes = 2;
222
- string node_target = 3;
223
- string node_auth_token = 4;
224
- }
225
-
226
- message RegisterNodeResponse {}
227
-
228
- message ReportNodeRequest {
229
- string node_id = 1;
230
- repeated string runtimes = 2;
231
- NodeSummary summary = 3;
232
- string node_target = 4;
233
- string node_auth_token = 5;
234
- }
235
-
236
- message ReportNodeResponse {}
237
-
238
- message AllocationStatusObservation {
239
- string allocation_id = 1;
240
- int64 attempt = 2;
241
- axern.control.common.v1.AllocationStatus status = 3;
242
- int32 exit_code = 4;
243
- bool exit_code_known = 5;
244
- string message = 6;
245
- google.protobuf.Timestamp observed_at = 7;
246
- bool ready = 8;
247
- string readiness_message = 9;
248
- // diagnostic_code is the bounded, machine-readable terminal or degraded
249
- // cause observed by the node. The message remains operator context and is
250
- // never parsed to recover this code.
251
- axern.control.common.v1.WorkloadDiagnosticCode diagnostic_code = 10;
252
- }
253
-
254
- message BatchReportAllocationStatusRequest {
255
- string node_id = 1;
256
- string node_auth_token = 2;
257
- repeated AllocationStatusObservation observations = 3;
258
- }
259
-
260
- message BatchReportAllocationStatusResponse {}
261
-
262
- // AllocationCapabilityConditionReport is deliberately independent from
263
- // lifecycle status. Updating capability conditions cannot make an allocation
264
- // RUNNING, READY, terminal, or alter its exit status/message.
265
- message AllocationCapabilityConditionReport {
266
- string allocation_id = 1;
267
- int64 attempt = 2;
268
- axern.control.capability.v1.CapabilityConditionSet condition_set = 3;
269
- }
270
-
271
- message BatchReportAllocationCapabilityConditionsRequest {
272
- string node_id = 1;
273
- string node_auth_token = 2;
274
- repeated AllocationCapabilityConditionReport reports = 3;
275
- }
276
-
277
- message BatchReportAllocationCapabilityConditionsResponse {}
278
-
279
- // AllocationMemoryObservation is a bounded latest-value report from the host
280
- // cgroup. Runtime-specific diagnostics such as `runsc usage --full` are not
281
- // included because they cannot be added to these kernel counters.
282
- enum AllocationMemoryCleanupState {
283
- ALLOCATION_MEMORY_CLEANUP_STATE_UNSPECIFIED = 0;
284
- ALLOCATION_MEMORY_CLEANUP_STATE_ASSIGNED = 1;
285
- ALLOCATION_MEMORY_CLEANUP_STATE_RETIRING = 2;
286
- }
287
-
288
- message AllocationMemoryObservation {
289
- string allocation_id = 1;
290
- int64 attempt = 2;
291
- int64 revision = 3;
292
- google.protobuf.Timestamp observed_at = 4;
293
- int64 request_bytes = 5;
294
- // Zero means the sandbox has no per-allocation hard limit. Usage and cgroup
295
- // identity remain observable, while the control-verification fields must be
296
- // false and swap_current_bytes is informational rather than constrained.
297
- int64 limit_bytes = 6;
298
- int64 current_bytes = 7;
299
- int64 peak_bytes = 8;
300
- int64 swap_current_bytes = 9;
301
- int64 anon_bytes = 10;
302
- int64 file_bytes = 11;
303
- int64 shmem_bytes = 12;
304
- int64 kernel_bytes = 13;
305
- int64 dirty_bytes = 14;
306
- int64 writeback_bytes = 15;
307
- uint64 event_high = 16;
308
- uint64 event_max = 17;
309
- uint64 event_oom = 18;
310
- uint64 event_oom_kill = 19;
311
- uint64 event_oom_group_kill = 20;
312
- double psi_some_avg10 = 21;
313
- double psi_full_avg10 = 22;
314
- uint64 psi_some_total_usec = 23;
315
- uint64 psi_full_total_usec = 24;
316
- string cgroup_identity = 25;
317
- string runtime = 26;
318
- bool parent_controls_verified = 27;
319
- bool leaf_controls_verified = 28;
320
- bool pid_roles_verified = 29;
321
- AllocationMemoryCleanupState cleanup_state = 30;
322
- // psi_available distinguishes an unsupported per-cgroup PSI interface from
323
- // a supported interface that currently reports zero pressure. When false,
324
- // all PSI values above must be zero.
325
- bool psi_available = 31;
326
- // peak_available reports whether peak_bytes came from the kernel
327
- // memory.peak interface. Older cgroup v2 kernels may omit that optional
328
- // file; in that case peak_bytes equals current_bytes and is only a sampled
329
- // lower bound. Hard-limit evidence never depends on this observability bit.
330
- bool peak_available = 32;
331
- }
332
-
333
- message BatchReportAllocationMemoryObservationsRequest {
334
- string node_id = 1;
335
- string node_auth_token = 2;
336
- repeated AllocationMemoryObservation observations = 3;
337
- }
338
-
339
- message BatchReportAllocationMemoryObservationsResponse {}
340
-
341
- message WatchExecutionLeasesRequest {
342
- string node_id = 1;
343
- int64 after_revision = 2;
344
- string node_auth_token = 3;
345
- }
346
-
347
- message WatchExecutionLeasesResponse {
348
- repeated axern.control.common.v1.ExecutionLease leases = 1;
349
- int64 current_revision = 2;
350
- }
351
-
352
- message WatchTunnelSessionsRequest {
353
- string node_id = 1;
354
- int64 after_revision = 2;
355
- string node_auth_token = 3;
356
- }
357
-
358
- message NodeTunnelSession {
359
- axern.control.tunnel.v1.TunnelSession session = 1;
360
- string node_token = 2;
361
- }
362
-
363
- message WatchTunnelSessionsResponse {
364
- repeated NodeTunnelSession sessions = 1;
365
- int64 current_revision = 2;
366
- }
367
-
368
- message ReportTunnelSessionStatusRequest {
369
- string session_id = 1;
370
- axern.control.tunnel.v1.TunnelSessionStatus status = 2;
371
- string reason = 3;
372
- string bound_addr = 4;
373
- string node_id = 5;
374
- string node_auth_token = 6;
375
- }
376
-
377
- message ReportTunnelSessionStatusResponse {}
378
-
379
- enum PlacementCandidateState {
380
- PLACEMENT_CANDIDATE_STATE_UNSPECIFIED = 0;
381
- PLACEMENT_CANDIDATE_STATE_ELIGIBLE = 1;
382
- PLACEMENT_CANDIDATE_STATE_REJECTED = 2;
383
- }
384
-
385
- enum PlacementRejectionReason {
386
- PLACEMENT_REJECTION_REASON_UNSPECIFIED = 0;
387
- PLACEMENT_REJECTION_REASON_STALE_HEARTBEAT = 1;
388
- PLACEMENT_REJECTION_REASON_STALE_SUMMARY = 2;
389
- PLACEMENT_REJECTION_REASON_RUNTIME_UNSUPPORTED = 3;
390
- PLACEMENT_REJECTION_REASON_AXNODED_NOT_READY = 4;
391
- PLACEMENT_REJECTION_REASON_IMAGEMGR_UNAVAILABLE = 5;
392
- PLACEMENT_REJECTION_REASON_IMAGEFSD_UNAVAILABLE = 6;
393
- PLACEMENT_REJECTION_REASON_NODE_DRAINING = 7;
394
- PLACEMENT_REJECTION_REASON_NODE_DISABLED = 8;
395
- PLACEMENT_REJECTION_REASON_NODE_SELECTOR_MISMATCH = 9;
396
- PLACEMENT_REJECTION_REASON_INSUFFICIENT_CPU = 10;
397
- PLACEMENT_REJECTION_REASON_INSUFFICIENT_MEMORY = 11;
398
- PLACEMENT_REJECTION_REASON_PORTS_UNSUPPORTED = 12;
399
- PLACEMENT_REJECTION_REASON_NETWORK_UNSUPPORTED = 13;
400
- PLACEMENT_REJECTION_REASON_CAPABILITY_UNSUPPORTED = 14;
401
- PLACEMENT_REJECTION_REASON_NODE_RETIRED = 15;
402
- PLACEMENT_REJECTION_REASON_INSUFFICIENT_EPHEMERAL_STORAGE = 16;
403
- PLACEMENT_REJECTION_REASON_NODE_MEMORY_SYSTEM_RESERVE_EXHAUSTED = 17;
404
- PLACEMENT_REJECTION_REASON_NODE_MEMORY_BUDGET_UNAVAILABLE = 18;
405
- }
406
-
407
- message PlacementRank {
408
- bool mounted_match = 1;
409
- int32 retained_rootfs_count = 2;
410
- int32 retained_runtime_count = 3;
411
- bool nydus_daemon_alive = 4;
412
- int64 chunkdb_recent_access_age_secs = 5;
413
- int64 peer_healthy_count = 6;
414
- int64 peer_hinted_count = 7;
415
- bool bpfnet_preferred = 8;
416
- bool idle_pool_ready = 9;
417
- int64 axnoded_used_milli = 10;
418
- int64 axnoded_used_bytes = 11;
419
- int64 axnoded_active_instances = 12;
420
- }
421
-
422
- message PlacementCandidate {
423
- string node_id = 1;
424
- PlacementCandidateState state = 2;
425
- repeated PlacementRejectionReason rejection_reasons = 3;
426
- int64 heartbeat_age_secs = 4;
427
- int64 summary_age_secs = 5;
428
- PoolsSummary pools = 6;
429
- ResourcesSummary resources = 7;
430
- LocalitySummary locality = 8;
431
- PlacementRank rank = 9;
432
- }
433
-
434
- service NodeControl {
435
- rpc RegisterNode(RegisterNodeRequest) returns (RegisterNodeResponse) {}
436
- rpc ReportNode(ReportNodeRequest) returns (ReportNodeResponse) {}
437
- rpc BatchReportAllocationStatus(BatchReportAllocationStatusRequest) returns (BatchReportAllocationStatusResponse) {}
438
- rpc BatchReportAllocationCapabilityConditions(BatchReportAllocationCapabilityConditionsRequest) returns (BatchReportAllocationCapabilityConditionsResponse) {}
439
- rpc BatchReportAllocationMemoryObservations(BatchReportAllocationMemoryObservationsRequest) returns (BatchReportAllocationMemoryObservationsResponse) {}
440
- rpc WatchExecutionLeases(WatchExecutionLeasesRequest) returns (stream WatchExecutionLeasesResponse) {}
441
- rpc WatchTunnelSessions(WatchTunnelSessionsRequest) returns (stream WatchTunnelSessionsResponse) {}
442
- rpc ReportTunnelSessionStatus(ReportTunnelSessionStatusRequest) returns (ReportTunnelSessionStatusResponse) {}
443
- }