feat(copilot): managed profile testing and openaiCompatible provider support

- add native openaiCompatible provider type with flat baseUrl/apiKey/dialect
  config fields and declared per-model capabilities
- add admin-only probeManagedCopilotProfile GraphQL mutation that dispatches
  real probe requests against server-managed copilot profiles, reusing the
  BYOK probe engine with an AllowPrivate egress policy for self-hosted
  endpoints (Vertex profiles rejected; use workspace BYOK instead)
- expose providers.profiles app config descriptor to the admin console
- add 'AI Providers' settings group with JSON editor and per-profile Test
  action that probes declared capabilities and reports verified/failed
  status per model and operation
This commit is contained in:
2026-08-26 09:51:52 +07:00
parent ff599ac7f1
commit 177150086f
24 changed files with 1309 additions and 53 deletions

View File

@@ -1448,6 +1448,33 @@ input ManageUserInput {
name: String
}
type ManagedProfileModelProbeCheckType {
operation: ByokProbeOperation!
status: ManagedProfileProbeStatusType!
}
type ManagedProfileModelProbeType {
checks: [ManagedProfileModelProbeCheckType!]!
modelId: String!
}
input ManagedProfileProbeCheckInput {
modelId: String!
operation: ByokProbeOperation!
}
type ManagedProfileProbeResultType {
connection: ManagedProfileProbeStatusType!
definitionFingerprint: String!
models: [ManagedProfileModelProbeType!]!
}
type ManagedProfileProbeStatusType {
errorKind: String
kind: ByokProbeStatusKind!
testedAt: DateTime
}
enum McpAccessMode {
READ_ONLY
READ_WRITE
@@ -1631,6 +1658,11 @@ type Mutation {
"""mention user in a doc"""
mentionUser(input: MentionInput!): ID!
previewLicense(license: Upload!): AdminLicensePreview!
"""
Test a server-managed copilot provider profile by dispatching real probe requests.
"""
probeManagedCopilotProfile(checks: [ManagedProfileProbeCheckInput!]!, profileId: ID!): ManagedProfileProbeResultType!
probeWorkspaceByokDraft(input: ProbeWorkspaceByokDraftInput!): WorkspaceByokProbeResultType!
probeWorkspaceByokProfile(input: ProbeWorkspaceByokProfileInput!): WorkspaceByokProbeResultType!
publishDoc(docId: String!, mode: PublicDocMode = Page, workspaceId: String!): DocType!