core: add community capability profile seam
This commit is contained in:
@@ -144,4 +144,5 @@ Progress:
|
|||||||
- done:
|
- done:
|
||||||
- Phase 0 / task `0.1`: создан `crank-core::ext` module skeleton
|
- 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.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 не изменено
|
- backward-compatible alias `CommunityMachineCredentialVerifier` сохранен, поведение Community не изменено
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use std::path::PathBuf;
|
|||||||
use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
|
use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
|
||||||
use crank_core::{
|
use crank_core::{
|
||||||
Agent, AgentId, AgentOperationBinding, AgentStatus, AgentVersion, AggregationMode,
|
Agent, AgentId, AgentOperationBinding, AgentStatus, AgentVersion, AggregationMode,
|
||||||
AsyncJobHandle, AuthConfig, AuthKind, AuthProfile, AuthProfileId, ConfigExport,
|
AsyncJobHandle, AuthConfig, AuthKind, AuthProfile, AuthProfileId, CapabilityProfile,
|
||||||
EditionCapabilities, EditionLimits, ExecutionMode, ExportMode, GeneratedDraft,
|
ConfigExport, EditionCapabilities, ExecutionMode, ExportMode, GeneratedDraft,
|
||||||
GeneratedDraftStatus, InvitationId, InvitationStatus, InvitationToken, InvocationLevel,
|
GeneratedDraftStatus, InvitationId, InvitationStatus, InvitationToken, InvocationLevel,
|
||||||
InvocationLog, InvocationLogId, InvocationSource, InvocationStatus, IssueAgentTokenRequest,
|
InvocationLog, InvocationLogId, InvocationSource, InvocationStatus, IssueAgentTokenRequest,
|
||||||
IssueOneTimeAgentTokenRequest, IssuedAgentTokenResponse, JobStatus, MachineAccessMode,
|
IssueOneTimeAgentTokenRequest, IssuedAgentTokenResponse, JobStatus, MachineAccessMode,
|
||||||
@@ -1496,17 +1496,7 @@ impl AdminService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_capabilities(&self) -> EditionCapabilities {
|
pub async fn get_capabilities(&self) -> EditionCapabilities {
|
||||||
EditionCapabilities {
|
crank_core::CommunityCapabilityProfile.capabilities()
|
||||||
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),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn issue_agent_token(
|
pub async fn issue_agent_token(
|
||||||
|
|||||||
@@ -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),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ pub use ext::auth::{
|
|||||||
MachineCredentialVerifier, MachineCredentialVerifierError, SharedMachineCredentialVerifier,
|
MachineCredentialVerifier, MachineCredentialVerifierError, SharedMachineCredentialVerifier,
|
||||||
VerifiedMachineCredential,
|
VerifiedMachineCredential,
|
||||||
};
|
};
|
||||||
|
pub use ext::capability::{CapabilityProfile, CommunityCapabilityProfile};
|
||||||
pub use ids::{
|
pub use ids::{
|
||||||
AgentId, AsyncJobId, AuthProfileId, DescriptorId, InvitationId, InvocationLogId, OperationId,
|
AgentId, AsyncJobId, AuthProfileId, DescriptorId, InvitationId, InvocationLogId, OperationId,
|
||||||
PlatformApiKeyId, SampleId, SecretId, StreamSessionId, ToolId, UserId, UserSessionId,
|
PlatformApiKeyId, SampleId, SecretId, StreamSessionId, ToolId, UserId, UserSessionId,
|
||||||
|
|||||||
Reference in New Issue
Block a user