Models: J
JournalEntry
Section titled “JournalEntry”sequence: intkind: strnode_id: str | None(nodeIdon the wire) (optional)payload: Any | None(optional)timestamp: AwareDatetime | str
JournalKind
Section titled “JournalKind”root: str
JudgeClass
Section titled “JudgeClass”id: strtenant_id: str(tenantIdon the wire)scope: kindgi.client.JudgeClassScopeTenant | kindgi.client.JudgeClassScopeProject | kindgi.client.JudgeClassScopeAgent | kindgi.client.JudgeClassScopeUnrecognizedname: strweight: floatdescription: str | None(optional)assertable_by: kindgi.client.JudgeClassAssertableByView | None(assertableByon the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
JudgeClassAssertableBy
Section titled “JudgeClassAssertableBy”Who may assert the class: every part that is set must hold. A class with one is restricted: a judgment recorded while it is carries restricted, and a comparison weighted restricted-only counts only those.
min_reviewer_role: Optional[Literal['standard', 'senior', 'admin']](minReviewerRoleon the wire) (optional)principal_kinds: list[Literal['user', 'service']] | None(principalKindson the wire) (optional)principal_ids: list[kindgi.client.PrincipalId] | None(principalIdson the wire) (optional)
JudgeClassAssertableByView
Section titled “JudgeClassAssertableByView”Who may assert the class, as the caller sees it: every part that is set must hold. principalIds is sent only to an admin on the class's scope; principalCount to everyone who reads it.
min_reviewer_role: Optional[Annotated[Union[Literal['standard', 'senior', 'admin'], str], <kindgi.client._open.OpenEnum object at 0x107c4bdd0>]](minReviewerRoleon the wire) (optional)principal_kinds: list[Annotated[Union[Literal['user', 'service'], str], <kindgi.client._open.OpenEnum object at 0x107c4bdd0>]] | None(principalKindson the wire) (optional)principal_ids: list[kindgi.client.PrincipalId] | None(principalIdson the wire) (optional)principal_count: int | None(principalCounton the wire) (optional)
JudgeClassCollectionPage
Section titled “JudgeClassCollectionPage”data: list[kindgi.client.JudgeClass]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
JudgeClassId
Section titled “JudgeClassId”root: str
JudgeClassScopeAgent
Section titled “JudgeClassScopeAgent”Where a judge class applies: the whole tenant, one project, or one agent in a project.
kind: Literal['agent']project_id: str(projectIdon the wire)agent_id: str(agentIdon the wire)
JudgeClassScopeProject
Section titled “JudgeClassScopeProject”Where a judge class applies: the whole tenant, one project, or one agent in a project.
kind: Literal['project']project_id: str(projectIdon the wire)
JudgeClassScopeTenant
Section titled “JudgeClassScopeTenant”Where a judge class applies: the whole tenant, one project, or one agent in a project.
kind: Literal['tenant']
JudgeClassScopeUnrecognized
Section titled “JudgeClassScopeUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
Judged
Section titled “Judged”What people said about this item on the replay itself, once they judged it there.
yes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)
JudgedComparisonResult
Section titled “JudgedComparisonResult”A comparison's result (a judged eval run's): the summary and each case. EvalRun.result stays an open object, since each kind has its own; the clients read it as this (TS comparisonOf(run), Python comparison_of(run)).
summary: kindgi.client.JudgedComparisonSummaryper_case: list[kindgi.client.ComparisonCaseResult](perCaseon the wire)
JudgedComparisonSummary
Section titled “JudgedComparisonSummary”What a comparison concluded: the candidate beside the recorded runs, the case counts, and the metrics. What a promotion gate reads.
eval_run_id: str(evalRunIdon the wire)status: Literal['completed', 'partial', 'failed']completed_at: AwareDatetime(completedAton the wire)suite: kindgi.client.Suite1candidate: kindgi.client.ComparisonCandidateAgent | kindgi.client.ComparisonCandidateFlowbaseline: kindgi.client.Baseline | kindgi.client.Baseline1scope: kindgi.client.JudgedComparisonSummaryScopecases: intdiverged: intrefused_writes: int(refusedWriteson the wire)errors: interased: int | None(optional)rescore_of: str | None(rescoreOfon the wire) (optional)not_rescored: int | None(notRescoredon the wire) (optional)stopped: intreads: Literal['recorded', 'live']class_weights: Optional[Literal['as-recorded', 'restricted-only']](classWeightson the wire) (optional)sample: kindgi.client.EvalSample | None(optional)sampling: kindgi.client.Samplingrepetitions: intmetrics: kindgi.client.Metrics
JudgedComparisonSummaryScope
Section titled “JudgedComparisonSummaryScope”Where the test set's judgments came from.
project_id: str | None(projectIdon the wire) (optional)
JudgedEvalCase
Section titled “JudgedEvalCase”One case of a judged eval suite: a copy of a judged run with its items' judgments summed up.
case_id: str(caseIdon the wire)subject: kindgi.client.JudgedSubjectinput: Anycontext: kindgi.client.JudgedRunContext | None(optional)output: Anyitems: list[kindgi.client.JudgedItemSummary]erased: Optional[Literal[True]](optional)
JudgedEvalCaseCollectionPage
Section titled “JudgedEvalCaseCollectionPage”data: list[kindgi.client.JudgedEvalCase]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
JudgedItem
Section titled “JudgedItem”The judged item of a run's output.
key: strpointer: str | None(optional)rank: int | None(optional)
JudgedItemSummary
Section titled “JudgedItemSummary”The judgments of one item of a case's output, summed up.
key: strpointer: str | None(optional)rank: int | None(optional)yes: intno: intyes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)restricted: kindgi.client.Restricted | None(optional)reasons: list[kindgi.client.Reason]
JudgedRunContext
Section titled “JudgedRunContext”What a judged run needs besides its input to be replayed, captured when it was first judged. For an agent turn: the conversation before it, what its retrievals returned, and the decision at its session approval gate. For a flow run: its tool calls with their results. For both: the env values its tools were sent.
history: list[Any] | None(optional)history_truncated: bool | None(historyTruncatedon the wire) (optional)retrieved: Any | None(optional)recalled: Any | None(optional)session_approval: kindgi.client.SessionApproval | None(sessionApprovalon the wire) (optional)flow: kindgi.client.JudgedRunContextFlow | None(optional)tool_env: dict[str, dict[str, str]] | None(toolEnvon the wire) (optional)replay_of: str | None(replayOfon the wire) (optional)
JudgedRunContextFlow
Section titled “JudgedRunContextFlow”For a flow run: what it did, kept at its first judgment so it can be replayed. Every tool call it made with its result (at its tool nodes, in its agent steps' turns and in its sub-flows), at most 500, and its agent steps.
calls: list[kindgi.client.Call]steps: list[kindgi.client.Step]truncated: bool | None(optional)
JudgedRunCopy
Section titled “JudgedRunCopy”The stored copy of a judged run's input and output, taken when it was first judged.
run_id: str(runIdon the wire)subject: kindgi.client.JudgedSubjectinput: Anycontext: kindgi.client.JudgedRunContext | None(optional)output: Anysegments: list[kindgi.client.ScopeSegment] | None(optional)captured_at: AwareDatetime(capturedAton the wire)
JudgedSubject
Section titled “JudgedSubject”What a judged run ran: an agent at a version, or a flow at a version.
kind: Union[Literal['agent', 'flow'], str]id: strversion: str
JudgingClassCount
Section titled “JudgingClassCount”judge_class_id: str | None(judgeClassIdon the wire)count: int
JudgingClassResult
Section titled “JudgingClassResult”judge_class_id: str | None(judgeClassIdon the wire)judgments: intyes: int
JudgingDismissBody
Section titled “JudgingDismissBody”reason: str | None(optional)
JudgingItemCan
Section titled “JudgingItemCan”What the caller may do with the item, by the check the routes make (write on the project, as judging the run needs).
dismiss: boolreopen: bool
JudgingItemRule
Section titled “JudgingItemRule”rule_id: str(ruleIdon the wire)version: int
JudgingProgress
Section titled “JudgingProgress”The live judgments on the run so far, by class.
total: intby_class: list[kindgi.client.JudgingClassCount](byClasson the wire)
JudgingQueueItem
Section titled “JudgingQueueItem”A queued run: never its content, only what it was and where it stands.
run_id: str(runIdon the wire)project_id: str(projectIdon the wire)agent_id: str | None(agentIdon the wire) (optional)agent_version: str | None(agentVersionon the wire) (optional)flow_id: str(flowIdon the wire)run_status: Union[Literal['completed', 'failed', 'cancelled'], str](runStatuson the wire)completed_at: AwareDatetime(completedAton the wire)rules: list[kindgi.client.JudgingItemRule]wanted_class_ids: list[str](wantedClassIdson the wire)any_judgment: bool(anyJudgmenton the wire)progress: kindgi.client.JudgingProgressadded_at: AwareDatetime(addedAton the wire)state: Union[Literal['open', 'judged', 'dismissed', 'erased'], str]closed_at: AwareDatetime | None(closedAton the wire) (optional)closed_by: str | None(closedByon the wire) (optional)reason: str | None(optional)can: kindgi.client.JudgingItemCan
JudgingQueuePage
Section titled “JudgingQueuePage”data: list[kindgi.client.JudgingQueueItem]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)total: int
JudgingResultGroup
Section titled “JudgingResultGroup”One rule version's runs of one agent version. added = open + judged + dismissed + erased.
rule_version: int(ruleVersionon the wire)agent_version: str | None(agentVersionon the wire)added: intopen: intjudged: intdismissed: interased: intskipped_by_cap: int(skippedByCapon the wire)judgments: intruns_with_judgments: int | None(runsWithJudgmentson the wire) (optional)yes_share: float | None(yesShareon the wire)by_class: list[kindgi.client.JudgingClassResult](byClasson the wire)
JudgingRule
Section titled “JudgingRule”One version of a judging rule; the latest live one applies.
rule_id: str(ruleIdon the wire)project_id: str(projectIdon the wire)version: intname: strwhen: kindgi.client.JudgingRuleWhensample: floatmax_open: int | None(maxOpenon the wire) (optional)judge_class_id: str | None(judgeClassIdon the wire) (optional)enabled: boolcreated_by: str | None(createdByon the wire) (optional)created_at: AwareDatetime(createdAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
JudgingRulePage
Section titled “JudgingRulePage”data: list[kindgi.client.JudgingRule]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
JudgingRulePatch
Section titled “JudgingRulePatch”The fields to change; when is replaced whole.
name: str | None(optional)when: kindgi.client.JudgingRuleWhen | None(optional)sample: float | None(optional)max_open: int | None(maxOpenon the wire) (optional)judge_class_id: str | None(judgeClassIdon the wire) (optional)enabled: bool | None(optional)
JudgingRulePreview
Section titled “JudgingRulePreview”considered: intmatched: int
JudgingRuleResults
Section titled “JudgingRuleResults”rule_id: str(ruleIdon the wire)since: AwareDatetime | None(optional)groups: list[kindgi.client.JudgingResultGroup]
JudgingRuleSpec
Section titled “JudgingRuleSpec”A judging rule as written. It only lists runs: nothing here starts a model.
name: strwhen: kindgi.client.JudgingRuleWhensample: float | None(optional)max_open: int | None(maxOpenon the wire) (optional)judge_class_id: str | None(judgeClassIdon the wire) (optional)enabled: bool | None(optional)
JudgingRuleUnregisterResult
Section titled “JudgingRuleUnregisterResult”rule_id: str(ruleIdon the wire)unregistered: bool
JudgingRuleWhen
Section titled “JudgingRuleWhen”Which of a project's runs a rule matches as they end. Every field narrows; absent fields don't. agentIds or flowIds, not both. Top-level runs only (an agent's own runs, not its turns as a flow's step); replays never match.
agent_ids: list[str] | None(agentIdson the wire) (optional)flow_ids: list[str] | None(flowIdson the wire) (optional)versions: list[str] | None(optional)status: list[Annotated[Union[Literal['completed', 'failed', 'cancelled'], str], <kindgi.client._open.OpenEnum object at 0x107c4bdd0>]] | None(optional)include_dry_runs: bool | None(includeDryRunson the wire) (optional)
Judgment
Section titled “Judgment”id: strtenant_id: str(tenantIdon the wire)project_id: str(projectIdon the wire)run_id: str(runIdon the wire)subject: kindgi.client.JudgedSubjectitem: kindgi.client.JudgedItemverdict: Union[Literal['yes', 'no'], str]reason: str | None(optional)judge_class_id: str | None(judgeClassIdon the wire) (optional)restricted: Optional[Literal[True]](optional)asserted_by: kindgi.client.JudgmentAssertedBy(assertedByon the wire)participant_id: str | None(participantIdon the wire) (optional)created_at: AwareDatetime(createdAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)superseded_by: str | None(supersededByon the wire) (optional)
JudgmentAssertedBy
Section titled “JudgmentAssertedBy”Who asserted a judgment: the authenticated caller, never a typed name.
kind: Union[Literal['user', 'service'], str]id: str
JudgmentCollectionPage
Section titled “JudgmentCollectionPage”data: list[kindgi.client.Judgment]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
JudgmentWithCopies
Section titled “JudgmentWithCopies”A judgment with the stored copies of what was judged.
id: strtenant_id: str(tenantIdon the wire)project_id: str(projectIdon the wire)run_id: str(runIdon the wire)subject: kindgi.client.JudgedSubjectitem: kindgi.client.JudgedItemverdict: Union[Literal['yes', 'no'], str]reason: str | None(optional)judge_class_id: str | None(judgeClassIdon the wire) (optional)restricted: Optional[Literal[True]](optional)asserted_by: kindgi.client.JudgmentAssertedBy(assertedByon the wire)participant_id: str | None(participantIdon the wire) (optional)created_at: AwareDatetime(createdAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)superseded_by: str | None(supersededByon the wire) (optional)run: kindgi.client.JudgedRunCopyitem_value: Any | None(itemValueon the wire) (optional)