Files
OpenShell/proto/datamodel.proto
Alexander Watson 1d7909cb38 chore: add open-source compliance files and SPDX headers (#71)
Add Apache 2.0 licensing, SPDX copyright headers on all source files,
DCO enforcement, third-party notices, and CI enforcement.

- LICENSE: Apache License 2.0 full text
- DCO: Developer Certificate of Origin 1.1
- SPDX headers on all 176 source files (.rs, .py, .proto, .rego, .sh,
  .toml, .yaml, Dockerfiles)
- scripts/update_license_headers.py: header management with --check mode
- scripts/generate_third_party_notices.py: dependency license aggregation
- THIRD-PARTY-NOTICES: generated listing of all Rust and Python deps
- build/license.toml: mise tasks for license:check and license:update
- CI: license-headers job in checks.yml, DCO check workflow
- CONTRIBUTING.md: DCO sign-off requirement and license header docs
- Cargo.toml: license changed to Apache-2.0, repository URL updated
- pyproject.toml: license field added

Closes #58
2026-03-03 09:30:56 -08:00

88 lines
2.4 KiB
Protocol Buffer

// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package navigator.datamodel.v1;
import "google/protobuf/struct.proto";
import "sandbox.proto";
// Sandbox model stored by Navigator.
message Sandbox {
string id = 1;
string name = 2;
string namespace = 3;
SandboxSpec spec = 4;
SandboxStatus status = 5;
SandboxPhase phase = 6;
// Milliseconds since Unix epoch when the sandbox was created.
int64 created_at_ms = 7;
// Currently active policy version (updated when sandbox reports loaded).
uint32 current_policy_version = 8;
}
// Navigator-level sandbox spec.
message SandboxSpec {
string log_level = 1;
map<string, string> environment = 5;
SandboxTemplate template = 6;
// Required sandbox policy configuration.
navigator.sandbox.v1.SandboxPolicy policy = 7;
// Provider names to attach to this sandbox.
repeated string providers = 8;
}
// Sandbox template mapped onto Kubernetes pod template inputs.
message SandboxTemplate {
string image = 1;
string runtime_class_name = 2;
string agent_socket = 3;
map<string, string> labels = 4;
map<string, string> annotations = 5;
map<string, string> environment = 6;
google.protobuf.Struct resources = 7;
google.protobuf.Struct pod_template = 8;
google.protobuf.Struct volume_claim_templates = 9;
}
// Sandbox status captured from Kubernetes.
message SandboxStatus {
string sandbox_name = 1;
string agent_pod = 2;
string agent_fd = 3;
string sandbox_fd = 4;
repeated SandboxCondition conditions = 5;
}
// Sandbox condition mirrors Kubernetes conditions.
message SandboxCondition {
string type = 1;
string status = 2;
string reason = 3;
string message = 4;
string last_transition_time = 5;
}
// High-level sandbox lifecycle phase.
enum SandboxPhase {
SANDBOX_PHASE_UNSPECIFIED = 0;
SANDBOX_PHASE_PROVISIONING = 1;
SANDBOX_PHASE_READY = 2;
SANDBOX_PHASE_ERROR = 3;
SANDBOX_PHASE_DELETING = 4;
SANDBOX_PHASE_UNKNOWN = 5;
}
// Provider model stored by Navigator.
message Provider {
string id = 1;
string name = 2;
// Canonical provider type slug (for example: "claude", "gitlab").
string type = 3;
// Secret values used for authentication.
map<string, string> credentials = 4;
// Non-secret provider configuration.
map<string, string> config = 5;
}