thinkn
  • Product
    Manifesto
    The reason we exist
    Founder Studioprivate beta
    Make better product decisions faster
    Belief SDKinvite only
    Add belief states to your AI system
    Request Access →Join the private beta waitlist
  • Docs
  • Pricing
  • FAQ
  • Docs
  • Pricing
  • FAQ
Sign In
Welcome
  • Start Here
  • Install
  • Quickstart
  • FAQ
  • Why beliefs
  • Beliefs
  • Intent
  • Clarity
  • Moves
  • World
core/moves.mdx

Moves

Ranked next actions, prioritized by what would reduce the most uncertainty.

Without recommended next actions, the world model is informative but not action-guiding. Moves turn understanding into direction: the engine's ranked answer to "given what the agent currently believes, what should it investigate next?" Each move targets a specific belief, gap, or contradiction and reports how much acting on it would sharpen the agent's picture.

What a Move Is

A move is a recommended action the system surfaces based on the current belief state. Each move has an action type, a target, a reason, and an expected value representing how much it would improve the agent's understanding.

1{
2  action: 'gather_evidence',
3  target: 'Missing APAC market analysis',
4  reason: 'High-impact gap with 3 downstream dependencies',
5  value: 0.72,
6  executor: 'agent',
7}
  • action. The type of move: clarify, resolve_uncertainty, gather_evidence, compare_paths.
  • target. The belief, gap, or contradiction the move addresses.
  • reason. Why this move matters, in natural language.
  • value. How much this move would reduce uncertainty, 0–1. Higher means a bigger shift in the picture.
  • executor. Who should act: agent, user, or both.

Move Types

ActionWhen it surfaces
gather_evidenceA gap or weakly supported belief needs investigation
clarifyA contradiction exists between beliefs
resolve_uncertaintyA load-bearing belief has insufficient evidence
compare_pathsMultiple valid interpretations need a decision framework

Each action can have a subtype for specificity:

SubtypeDescription
researchFind external data or sources
validate_assumptionTest whether an assumption holds
resolve_contradictionAddress conflicting beliefs
quantify_riskMeasure exposure on a risk belief
design_testPropose an experiment to confirm or refute
synthesizeCombine multiple findings into a conclusion
reframeRestructure the problem based on new information

How Moves Are Ranked

Moves are ranked by how much they would reduce uncertainty in the beliefs that matter most.

A gap with many downstream dependencies generates a higher-value move than a gap with none. A contradiction between two load-bearing beliefs (beliefs that other beliefs derive from, so if they're wrong the rest collapse) generates a higher-value clarify move than a contradiction between peripheral claims that nothing depends on.

The system considers:

  • How much uncertainty the move would reduce
  • How many other beliefs depend on the target
  • Whether the target belief is load-bearing (see Clarity for how the engine identifies them)
  • The current clarity score and what would improve it most

Reading Moves

Moves are returned from every major SDK method:

1// Before the agent acts
2const context = await beliefs.before(userMessage)
3console.log(context.moves)  // ranked actions for this turn
4
5// After the agent acts
6const delta = await beliefs.after(result.text)
7console.log(delta.moves)    // updated recommendations
8
9// Full world state
10const world = await beliefs.read()
11console.log(world.moves)    // all current recommendations

Routing on Moves

Use moves to direct agent behavior:

1const delta = await beliefs.after(result.text)
2const next = delta.moves[0]
3
4if (!next) {
5  // No recommended actions. Clarity is likely high.
6  await finalize(delta.state)
7} else if (next.action === 'gather_evidence') {
8  await runResearch(next.target)
9} else if (next.action === 'clarify') {
10  await resolveContradiction(next.target)
11} else if (next.action === 'resolve_uncertainty') {
12  await deepDive(next.target)
13} else if (next.action === 'compare_paths') {
14  await presentTradeoffs(next.target)
15}

Executor

The executor field indicates who should act on the move.

ExecutorMeaning
agentThe agent can handle this autonomously
userThis requires human input or judgment
bothThe agent can start, but the user needs to weigh in

A user executor move might surface when the system detects a value judgment or strategic decision that the agent should not make alone.

World

The full state: beliefs, edges, clarity, and moves together.

Learn more

Moves: SDK

List, generate, and act on moves with beliefs.moves.*.

Learn more

Patterns

Move-driven routing and other common patterns.

Learn more
PreviousClarity
NextWorld

On this page

  • What a Move Is
  • Move Types
  • How Moves Are Ranked
  • Reading Moves
  • Routing on Moves
  • Executor