Models: I
IdentityProviderCollectionPage
Section titled “IdentityProviderCollectionPage”data: list[Annotated[kindgi.client.OidcIdentityProviderConfig | kindgi.client.SamlIdentityProviderConfig, FieldInfo(annotation=NoneType, required=True, discriminator='kind')]]has_more: bool | None(hasMoreon the wire) (optional)changes: Optional[Literal['tenant', 'operator']](optional)
IdentityProviderSignIn1
Section titled “IdentityProviderSignIn1”What to give the identity provider so it can send people back: set by the deployment on what it returns, ignored on registration. OIDC: redirectUri. SAML: spEntityId, acsUrl, spMetadataUrl.
redirect_uri: AnyUrl(redirectUrion the wire)
IdentityProviderSignIn2
Section titled “IdentityProviderSignIn2”What to give the identity provider so it can send people back: set by the deployment on what it returns, ignored on registration. OIDC: redirectUri. SAML: spEntityId, acsUrl, spMetadataUrl.
sp_entity_id: str(spEntityIdon the wire)acs_url: AnyUrl(acsUrlon the wire)sp_metadata_url: AnyUrl(spMetadataUrlon the wire)
IdentityProviderSignInUrls
Section titled “IdentityProviderSignInUrls”What to give the identity provider so it can send people back, for a provider under this providerId: the same before it's registered, after, and after an unregister and a new registration, so the identity provider's side can be set up first. Not secrets: they're in every sign-in's browser redirects.
provider_id: str(providerIdon the wire)kind: Literal['oidc', 'saml']sign_in: kindgi.client.IdentityProviderSignIn1 | kindgi.client.IdentityProviderSignIn2(signInon the wire)registered: bool
IdentitySessionCollectionPage
Section titled “IdentitySessionCollectionPage”data: list[kindgi.client.IdentitySessionSummary]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
IdentitySessionSummary
Section titled “IdentitySessionSummary”Wire-safe subset of a session. Excludes provider access-token / refresh-token — those never cross the wire, even to admins.
session_id: str(sessionIdon the wire)user_id: str(userIdon the wire)provider_id: str(providerIdon the wire)created_at: AwareDatetime(createdAton the wire)expires_at: AwareDatetime(expiresAton the wire)scopes: list[str]revoked_at: AwareDatetime | None(revokedAton the wire) (optional)
IdpCertificate
Section titled “IdpCertificate”root: str
ImproveBody
Section titled “ImproveBody”Start an improvement pass.
agent_id: str(agentIdon the wire)from_version: str | None(fromVersionon the wire) (optional)scope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegmentsuite_id: str(suiteIdon the wire)tiers: list[Literal['settings', 'prompt']] | None(optional)model: kindgi.client.Model2 | None(optional)candidates: int | None(optional)class_weights: Optional[Literal['as-recorded', 'restricted-only']](classWeightson the wire) (optional)objective: Optional[Literal['weightedYesShare', 'weightedPrecisionAtK']](optional)budget: kindgi.client.Budget2 | None(optional)
ImproveScheduleInput
Section titled “ImproveScheduleInput”An improve schedule's config.input. Each fire counts the trusted "no" judgments (recorded under a restricted judge class) on the agent's runs in the scope since its last pass. When there are enough, across enough runs and judges, it starts a pass on a fresh test set of those runs; otherwise the fire is skipped, saying which count was short. A pass that proposes asks for the review at once.
tiers: list[Literal['settings', 'prompt']] | None(optional)objective: Optional[Literal['weightedYesShare', 'weightedPrecisionAtK']](optional)class_weights: Optional[Literal['as-recorded', 'restricted-only']](classWeightson the wire) (optional)model: kindgi.client.Model4 | None(optional)candidates: int | None(optional)budget: kindgi.client.Budget3 | None(optional)threshold: kindgi.client.Threshold | None(optional)monthly_cap_usd: float | None(monthlyCapUsdon the wire) (optional)
ImproveScheduleTarget
Section titled “ImproveScheduleTarget”What an improve schedule works on: the agent, and the live scope its passes propose for and count judgments in.
agent_id: str(agentIdon the wire)scope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegment
ImprovementBudget
Section titled “ImprovementBudget”max_cost_usd: float(maxCostUsdon the wire)max_candidates: int(maxCandidateson the wire)
ImprovementPass
Section titled “ImprovementPass”An improvement pass: the runtime looking for better values for an agent version's tunable settings (x-kindgi-tunable) on a test set, within a budget. Its best candidate becomes an improvement proposal.
id: uuid.UUIDagent_id: str(agentIdon the wire)from_version: str(fromVersionon the wire)scope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegmentsuite_id: str(suiteIdon the wire)tiers: list[Literal['settings', 'prompt']]objective: Literal['weightedYesShare', 'weightedPrecisionAtK']class_weights: Optional[Literal['as-recorded', 'restricted-only']](classWeightson the wire) (optional)model: kindgi.client.Model1 | None(optional)candidates: int | None(optional)budget: kindgi.client.ImprovementBudgetrequested_by: str(requestedByon the wire)status: Literal['running', 'completed', 'failed', 'cancelled']candidates_evaluated: int(candidatesEvaluatedon the wire)cost_usd: str(costUsdon the wire)outcome: kindgi.client.ImprovementPassOutcome | None(optional)comparisons: list[kindgi.client.Comparison1] | None(optional)trigger: kindgi.client.Trigger | None(optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)finished_at: AwareDatetime | None(finishedAton the wire) (optional)
ImprovementPassCollectionPage
Section titled “ImprovementPassCollectionPage”data: list[kindgi.client.ImprovementPass]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ImprovementPassFinishedEvent
Section titled “ImprovementPassFinishedEvent”An improvement pass ended (completed, failed or cancelled): one a person started, or one an improve schedule did. Its outcome names the proposal it wrote, if it wrote one.
id: strtype: Literal['improvement-pass.finished']created_at: AwareDatetime(createdAton the wire)data: kindgi.client.Data1
ImprovementPassOutcome
Section titled “ImprovementPassOutcome”What a finished pass found. proposed: its best candidate beat the current values on the test set's hold-out part, so it wrote an improvement proposal (proposalId) for a reviewer to decide. nothing-found: no candidate beat them by more than the noise, or within the budget (reason; holdOut has the best candidate's numbers when one got that far). failed: message says why.
kind: Literal['proposed', 'nothing-found', 'failed']proposal_id: uuid.UUID | None(proposalIdon the wire) (optional)reason: str | None(optional)hold_out: kindgi.client.HoldOut | None(holdOuton the wire) (optional)message: str | None(optional)
InstructionType
Section titled “InstructionType”root: str
Instructions
Section titled “Instructions”root: str