harn-stdlib 0.10.27

Embedded Harn standard library source catalog
Documentation
// @harn-entrypoint-category agent.stdlib
import { __agent_loop_run } from "std/agent/loop_run"
import "std/agent/loop_support"
import {
  __agent_loop_fire_resume_continuity,
  __loop_progress_nudge_text,
} from "std/agent/loop_turn_options"

pub fn __progress_nudge_text(depth, has_tools, paradigm, made_tool_calls = false) {
  return __loop_progress_nudge_text(depth, has_tools, paradigm, made_tool_calls)
}

/**
 * agent_loop.
 *
 * @effects: [host, agent]
 * @errors: []
 * @api_stability: experimental
 */
pub fn agent_loop(message, system_prompt = nil, options = nil) {
  let opts = agent_loop_options(agent_progress_apply_options(options))
  opts = opts + {tools: agent_lifecycle_tools(opts?.tools, opts)}
  if system_prompt != nil && system_prompt != "" {
    opts = opts + {system: system_prompt}
  }
  const session = agent_session_init(message, system_prompt, opts)
  if session?.done {
    return session.result
  }
  agent_scratchpad_init(session, opts)
  if opts?._tool_format_override != nil {
    agent_emit_event(session.session_id, "tool_format_override", opts._tool_format_override)
  }
  if opts?._tool_format_capability_gap != nil {
    agent_emit_event(session.session_id, "capability_gap", opts._tool_format_capability_gap)
  }
  defer {
    try {
      __host_mcp_disconnect(session.session_id)
    } catch (e) {
    }
  }
  opts = __agent_loop_fire_resume_continuity(session, opts)
  opts = agent_stance_prepare(session, message, opts)
  return __agent_loop_run(message, session, opts)
}