Details
Object Hierarchy:
Description:
public class Details :
Base,
ProgressItem
One task in the plan. Built from task list output; updated from refinement output.
Task list (input): each list item under a task section heading has a nested list with labels What is needed, Skill,
References, Expected output. Links in References: current_file, paths, plan:... Keys are lowercase labels from
List.to_key_map(..., a_2_z), e.g. "what is needed", "skill", "references", "expected output", "requires user approval", "shared
references", "examination references".
Refined task (refinement output): section "Refined task" with same list plus Skill call and an optional fenced code block. Parser
uses ListItem.to_key_map(..., a_2_z) for both; update_props(refined_map); code added directly to code_blocks.
Execution: after refinement, the runner calls build_run_queue
then run_exec.
children holds one
Tool per run; each Tool.run runs the tool (if any) then the LLM. Summaries
and documents live on each Tool in the execution queue.
Content:
Properties:
- public ListModel children { get; }
- public ArrayList<Block> code_blocks { get; set; }
Code blocks from refinement (parser); add directly.
- public ArrayList<Format> exam_references { get; set; }
Links from "examination references" task_data (per-run execution).
- public bool exec_done { get; set; }
- public ulong idx_notify_id { get; set; }
- public string issues { get; set; }
Validation errors; append with this.issues += "\n" + msg. Parser
checks and appends with section context.
- public bool last_failure_was_communication { get; }
True when refinement failed after exhausting communication retries
(e.g. send threw 3 times). Caller should report to user.
- public Message? message { get; set; }
- public string msg_idx_txt { owned get; }
- public Document out_doc { get; set; }
Single markdown document after post-exec synthesis. Headings used for task://slug.md
(full document) or optional fragment for one section. Empty until run_post_exec finishes.
- public Block post_summary { get; set; }
Result summary block from post-exec (iteration + completed-task list).
- public ToolList proposed_tools { get; set; }
- public ArrayList<Format> references { get; set; }
Markdown links from task "references" block (current_file, paths,
plan:...); Runner resolves for prompt fill. Filled in fill_task_data().
- public bool requires_user_approval { get; set; }
True when this task should gate execution (e.g. modifies files); from
task list format.
- public ResultParser result_parser { get; set; }
Parser for last refine or executor response;
children valid after
exec_done (from the execution queue). Initialized in ctor so
issues is always available.
- public Runner runner { get; }
Runner; looked up from step.list.runner (tree: runner → list →
step → details).
- public ArrayList<Format> shared_references { get; set; }
Links from "shared references" task_data (refinement).
- public Definition skill { get; set; }
Resolved YAML skill for this task.
- public Manager skill_manager { get; }
Alias to runner.sr_factory.skill_manager (no setter).
- public PhaseEnum status { get; set; }
- public string status_str { owned get; }
- public unowned Step step { get; set; }
Step this task belongs to; required so Details looks up the tree
(step.list.runner) for runner, session, etc.
- public int step_index { get; set; }
Step index (0-based) of the section this task belongs to, or -1 if not
set. Set when the task list is built (e.g. in ResultParser.parse_task_list) so we don't re-derive section from position later.
- public Map<string,Block> task_data { get; set; }
Map from ListItem.to_key_map(..., a_2_z); keys are lowercase labels
only. All task content is read from here.
- public string title { owned get; }
- public RequestBase? tool_request { get; set; }
- public string tooltip_text { owned get; }
Creation methods:
Methods:
- public void build_run_queue ()
- protected override async void fill_model ()
Set chat_call.model from this task's skill definition when the skill
header has an optional model and it is available; otherwise use default.
- public void fill_name (int i)
If task_data has no "name" or empty, set name = (skill or "Task") + "
" + index. Single method.
- public string issue_label ()
Label for this task in issue messages: section number and name or slug
(e.g. "section 2 \"Research 1\"" or "section 2 (slug: research-1)") so the LLM can locate the task in the task list.
- public PromptTemplate post_exec_prompt (string previous_response, string retry_issues) throws Error
Build post-execution prompt from task_post_exec.md. previous_response
and retry_issues are used for retries (header_raw when non-empty).
- public async void refine (Cancellable? cancellable = null) throws Error
Refinement: fill template. Caller has validated via
skill_manager.validate(this); definition from this.skill is non-null. task_reference_contents comes from reference_contents() →
ResolveLink after preload_links (this.references only) in this loop. Up to 5 refinement attempts; up to 3 communication retries per
attempt. Caller (Runner) must catch and report to user; see 1.23.14.
- public PromptTemplate refinement_prompt () throws Error
Build refinement prompt template (no current_file; reference_contents
includes current file when in the task's References).
- public async void run_exec () throws Error
Run all Tool exec runs (tool if needed, then LLM) in order — every
run in the execution queue (tools). Then post-exec synthesis when there
is more than one run. Summaries and canonical document from post-exec when applicable.
- public async void run_post_exec () throws Error
Post-execution synthesis: combine executor outputs, call LLM with
task_post_exec.md, parse into post_summary and out_doc; validate links. Retry on parse/validation issues: refill with previous output
and issues via header_raw (same pattern as refinement).
- public string slug ()
This task's name as slug (e.g. "Research 1" → "research-1"). Returns
"" if no name in task_data or empty.
- public string to_markdown (PhaseEnum phase)
Task as markdown for a given phase. Does not add section headings
(e.g. `## Task`); caller adds header. COARSE: creation keys. REFINEMENT/EXECUTION: task list + `## Tool Calls` when tools exist.
POST_EXEC: task list only (no Tool Calls). LIST: task list + ##### Result summary when exec_done.
- public string tool_instructions (Definition definition)
Fenced JSON blocks from the session tool registry for each name in the
skill's tools list. Empty when there are no tools, the skill lists write_file, or nothing resolves to BaseTool.
- public ToolList tools ()
Typed view of
children — optional sugar instead of casting at every call site.
- public void update_props (Map<string,Block> refined_map)
Apply refined task map: set each key from refined_map into
this.task_data, then re-run fill.
- public async void wait_refined () throws Error
- public void write (string suffix = "")
Write this task's result to session task dir. Writes a single slug.md
from out_doc.
Inherited Members:
All known members inherited from class OLLMchat.Agent.Base
All known members inherited from class GLib.Object
- @get
- @new
- @ref
- @set
- add_toggle_ref
- add_weak_pointer
- bind_property
- connect
- constructed
- disconnect
- dispose
- dup_data
- dup_qdata
- force_floating
- freeze_notify
- get_class
- get_data
- get_property
- get_qdata
- get_type
- getv
- interface_find_property
- interface_install_property
- interface_list_properties
- is_floating
- new_valist
- new_with_properties
- newv
- notify
- notify_property
- ref_count
- ref_sink
- remove_toggle_ref
- remove_weak_pointer
- replace_data
- replace_qdata
- set_data
- set_data_full
- set_property
- set_qdata
- set_qdata_full
- set_valist
- setv
- steal_data
- steal_qdata
- thaw_notify
- unref
- watch_closure
- weak_ref
- weak_unref
All known members inherited from interface OLLMcoder.Task.ProgressItem
All known members inherited from interface OLLMchat.Agent.Interface