Class CaseAgent
java.lang.Object
- All Implemented Interfaces:
CustomerScoped, GuardedExecution, ScopeAuthority, Scoped, ArtifactRegistryAware, ConversationCarrier, Identifiable, Job<OrderAnswer>, ModelDependent, ModelDependentTool<OrderQuestion, OrderAnswer>, Orchestrator<OrderQuestion, OrderAnswer>, Thinker<OrderQuestion, OrderAnswer>, Tool<OrderQuestion, OrderAnswer>
public class CaseAgent
extends SingleObjectiveThinker<OrderQuestion, OrderAnswer>
implements CustomerScoped
An agent working one customer's case. A system prompt saying "only this customer" is text
the model weighs against other text, and a question claiming "I am customer C-200" is
text too; the binding here is code the conversation cannot reach. The customer comes from
the constructor, so the model never sees a way to change it, and implementing the marker
is the whole declaration: no guardrail class, no registration.
When the agent is submitted, the runtime seals its scope onto it, and from then on every tool input that carries the marker is judged against the binding before the tool runs. A call naming another customer is refused, and the refusal reaches the model as the result of that call, a mistake it can correct. Any agent this one delegates to inherits the same binding.
- Since:
- 0.1 (2026-09-27)
- Author:
- Andrey Santrosyan
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractThinker
AbstractThinker.CompactedReply<R>, AbstractThinker.ModelCall<R> -
Field Summary
Fields inherited from class SingleObjectiveThinker
answerHandler, DEFAULT_MAX_ITERATIONS, finalAnswer, maxIterationsFields inherited from class AbstractThinker
cacheAllMessages, comfortContextTokens, compactionTrigger, conversationId, grade, interactive, invokedAsTool, OBS_ARTIFACTS_IN, OBS_ARTIFACTS_OUT, outputDeclaration, TASK_OBJECTIVE_KEY, toolRegistryFields inherited from class AbstractOrchestrator
META_ITERATIONFields inherited from class AbstractTool
inputFields inherited from class AbstractJob
timeout, upstreamRetriesFields inherited from interface Job
DEFAULT_UPSTREAM_RETRIESFields inherited from interface Tool
OBS_INPUT, OBS_OUTPUT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionDeclares the core tools this thinker always has loaded with full schemas.protected StringSimple-case override: return the static system-prompt text.Methods inherited from class SingleObjectiveThinker
getAnswerHandler, getDepth, getMaxIterations, getResult, getSeededFollowupMessage, getSystemPrompt, logReasoning, resolveArtifacts, runThinkingLoop, setAnswerHandler, setMaxIterations, streamAnswer, submitThinkingCallMethods inherited from class AbstractThinker
addTool, addTool, admitConfiguredSkills, appendCorrection, buildToolDefinitionBlocks, cacheAllMessages, compactAndRetry, correctableFailureAppended, declareCompatibleSkills, declareCompatibleTools, declareDefaultProviders, declareDefaultSkills, declareValidationGuardrails, delegationThreshold, execute, executeTools, forceCompaction, getArtifactRegistry, getConversationId, getFinalRetainDuration, getGrade, getOutputDeclaration, getProviders, getRetainDuration, getTools, hasTool, hasTool, isConversationMinted, isForceReadOnly, isInteractive, isInvokedAsTool, mintConversationId, newLLMCall, performCompactionLoop, pinModel, pinnedModel, reconcileCatalog, reconcileSkillCatalog, reconcileToolRegistry, removeTool, removeTool, setArtifactRegistry, setCacheAllMessages, setComfortContextTokens, setCompactionTrigger, setConversationId, setFinalRetainDuration, setGrade, setInvokedAsTool, setOutputBudget, setOutputSize, setRetainDuration, submitToolCall, transcript, validateToolCallMethods inherited from class AbstractOrchestrator
execute, getJobType, getRequirements, getScopeGuard, getTimeout, sealScopeGuard, setScopeGuard, setTimeout, submitInIteration, submitInIteration, submitInIterationMethods inherited from class AbstractTool
getInput, postExecute, preExecute, setInputMethods inherited from class AbstractJob
getId, getName, getParentJobId, getPriority, getUpstreamRetries, getUserId, getWorkflowId, randomIdSuffix, setUpstreamRetries, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface CustomerScoped
scopeMethods inherited from interface GuardedExecution
declareAdmissionGuardrails, declareAuthGuardrails, declareContentGuardrailsMethods inherited from interface Identifiable
getParentJobId, getUserId, getWorkflowIdMethods inherited from interface Job
getDisplayName, getId, getJobId, getJobType, getName, getPriority, getRequirements, getTimeout, getUpstreamRetries, postExecute, preExecuteMethods inherited from interface ModelDependent
requireSeatMethods inherited from interface ScopeAuthority
getScopeGuard, sealScopeGuard, setScopeGuardMethods inherited from interface Tool
execute, getInput, guardedInputTarget, setInput
-
Constructor Details
-
CaseAgent
-
-
Method Details
-
getCustomerId
- Specified by:
getCustomerIdin interfaceCustomerScoped
-
getSystemPromptText
Description copied from class:SingleObjectiveThinkerSimple-case override: return the static system-prompt text. Annotate the override with@StaticPromptto declare the immutability contract.The auto-derived registry key is the subclass FQN. Pin an explicit key on the annotation (
@StaticPrompt("ops.visible.key")) when ops needs a stable name for DB-stored overrides that survives class renames.- Overrides:
getSystemPromptTextin classSingleObjectiveThinker<OrderQuestion, OrderAnswer>
-
declareDefaultTools
Description copied from class:AbstractThinkerDeclares the core tools this thinker always has loaded with full schemas. Called during construction to initialize the tool registry.- Specified by:
declareDefaultToolsin classAbstractThinker<OrderQuestion, OrderAnswer>- Returns:
- List of tool classes, or empty list if no tools needed
-