core: add community capability profile seam

This commit is contained in:
github-ops
2026-05-14 17:11:59 +00:00
parent 7f2acdecb9
commit 1f2ef70813
4 changed files with 31 additions and 13 deletions
+1
View File
@@ -144,4 +144,5 @@ Progress:
- done:
- Phase 0 / task `0.1`: создан `crank-core::ext` module skeleton
- Phase 0 / task `0.2`: `MachineCredentialVerifier` и связанные типы вынесены из `apps/mcp-server` в public seam `crank_core::ext::auth`
- Phase 0 / task `0.7`: введены `CapabilityProfile` и `CommunityCapabilityProfile`, а `admin-api` capability payload теперь собирается через public seam вместо локального literal
- backward-compatible alias `CommunityMachineCredentialVerifier` сохранен, поведение Community не изменено
+3 -13
View File
@@ -4,8 +4,8 @@ use std::path::PathBuf;
use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
use crank_core::{
Agent, AgentId, AgentOperationBinding, AgentStatus, AgentVersion, AggregationMode,
AsyncJobHandle, AuthConfig, AuthKind, AuthProfile, AuthProfileId, ConfigExport,
EditionCapabilities, EditionLimits, ExecutionMode, ExportMode, GeneratedDraft,
AsyncJobHandle, AuthConfig, AuthKind, AuthProfile, AuthProfileId, CapabilityProfile,
ConfigExport, EditionCapabilities, ExecutionMode, ExportMode, GeneratedDraft,
GeneratedDraftStatus, InvitationId, InvitationStatus, InvitationToken, InvocationLevel,
InvocationLog, InvocationLogId, InvocationSource, InvocationStatus, IssueAgentTokenRequest,
IssueOneTimeAgentTokenRequest, IssuedAgentTokenResponse, JobStatus, MachineAccessMode,
@@ -1496,17 +1496,7 @@ impl AdminService {
}
pub async fn get_capabilities(&self) -> EditionCapabilities {
EditionCapabilities {
edition: ProductEdition::Community,
supported_protocols: vec![Protocol::Rest],
supported_security_levels: vec![OperationSecurityLevel::Standard],
machine_access_modes: vec![MachineAccessMode::StaticAgentKey],
limits: EditionLimits {
max_workspaces: Some(1),
max_users_per_workspace: Some(1),
max_agents_per_workspace: Some(1),
},
}
crank_core::CommunityCapabilityProfile.capabilities()
}
pub async fn issue_agent_token(
+26
View File
@@ -1 +1,27 @@
use crate::{
EditionCapabilities, EditionLimits, MachineAccessMode, OperationSecurityLevel, ProductEdition,
Protocol,
};
pub trait CapabilityProfile: Send + Sync {
fn capabilities(&self) -> EditionCapabilities;
}
#[derive(Clone, Copy, Debug, Default)]
pub struct CommunityCapabilityProfile;
impl CapabilityProfile for CommunityCapabilityProfile {
fn capabilities(&self) -> EditionCapabilities {
EditionCapabilities {
edition: ProductEdition::Community,
supported_protocols: vec![Protocol::Rest],
supported_security_levels: vec![OperationSecurityLevel::Standard],
machine_access_modes: vec![MachineAccessMode::StaticAgentKey],
limits: EditionLimits {
max_workspaces: Some(1),
max_users_per_workspace: Some(1),
max_agents_per_workspace: Some(1),
},
}
}
}
+1
View File
@@ -36,6 +36,7 @@ pub use ext::auth::{
MachineCredentialVerifier, MachineCredentialVerifierError, SharedMachineCredentialVerifier,
VerifiedMachineCredential,
};
pub use ext::capability::{CapabilityProfile, CommunityCapabilityProfile};
pub use ids::{
AgentId, AsyncJobId, AuthProfileId, DescriptorId, InvitationId, InvocationLogId, OperationId,
PlatformApiKeyId, SampleId, SecretId, StreamSessionId, ToolId, UserId, UserSessionId,