harn-modules 0.7.55

Cross-file module graph and import resolution utilities for Harn
Documentation
/** runtime_task. */
pub fn runtime_task() -> string {
  return host_call("runtime.task", {}) ?? ""
}

/** runtime_pipeline_input. */
pub fn runtime_pipeline_input() {
  return host_call("runtime.pipeline_input", {})
}

/** runtime_dry_run. */
pub fn runtime_dry_run() -> bool {
  return host_call("runtime.dry_run", {}) ?? false
}

/** runtime_approved_plan. */
pub fn runtime_approved_plan() -> string {
  return host_call("runtime.approved_plan", {}) ?? ""
}

/** process_exec. */
pub fn process_exec(command) {
  let shell = host_call("process.get_default_shell", {})
  return host_call("process.exec", {mode: "shell", command: command, shell_id: shell?.id})
}

/** process_exec_with_timeout. */
pub fn process_exec_with_timeout(command, timeout_ms) {
  let shell = host_call("process.get_default_shell", {})
  return host_call(
    "process.exec",
    {mode: "shell", command: command, timeout: timeout_ms, shell_id: shell?.id},
  )
}

/** interaction_ask. */
pub fn interaction_ask(question) -> string {
  return host_call("interaction.ask", {question: question}) ?? ""
}

/** interaction_ask_with_kind. */
pub fn interaction_ask_with_kind(question, kind) -> string {
  return host_call("interaction.ask", {question: question, type: kind}) ?? ""
}

/** record_run_metadata. */
pub fn record_run_metadata(run, workflow_name) {
  if run?.path {
    host_call(
      "runtime.record_run",
      {
        workflow: workflow_name,
        path: run?.path,
        status: run?.status ?? "",
        fixture_type: run?.run?.replay_fixture?._type,
        usage: run?.usage,
        persisted_path: run?.persisted_path,
        summary: transcript_summary(run?.transcript),
        transcript_state: run?.transcript?.state ?? "",
        message_count: len(transcript_messages(run?.transcript)),
        event_count: len(transcript_events(run?.transcript)),
        asset_count: len(transcript_assets(run?.transcript)),
      },
    )
  }
}