MCPcopy Create free account
hub / github.com/BeingBeyond/BeTTER / compile_task_draft

Function compile_task_draft

src/task/specs/task_draft.py:71–174  ·  view source on GitHub ↗
(
    *,
    task_id: str,
    template: TaskTemplateSpec,
    draft: TaskDraftSpec,
)

Source from the content-addressed store, hash-verified

69
70
71def compile_task_draft(
72 *,
73 task_id: str,
74 template: TaskTemplateSpec,
75 draft: TaskDraftSpec,
76) -> CompiledTaskAuthoringBundle:
77 _validate_template(template)
78 _validate_draft(template, draft)
79
80 instance_ids_by_slot: dict[str, list[str]] = {}
81 object_universe = {
82 "container": [],
83 "goal_objects": [],
84 "fail_objects": [],
85 "decor_objects": [],
86 }
87 set_goal_objects: list[str] = []
88 set_fail_objects: list[str] = []
89 set_decor_objects: list[str] = []
90
91 slot_occurrence_index: dict[str, int] = {}
92 container_instance_id: str | None = None
93
94 for draft_object in draft.objects:
95 slot_occurrence_index[draft_object.slot_name] = slot_occurrence_index.get(draft_object.slot_name, 0) + 1
96 occurrence = slot_occurrence_index[draft_object.slot_name]
97 instance_id = _build_instance_id(
98 semantic_name=draft_object.semantic_name,
99 occurrence=occurrence,
100 salt=f"{task_id}:{draft_object.slot_name}:{draft_object.semantic_name}:{occurrence}",
101 )
102 instance_ids_by_slot.setdefault(draft_object.slot_name, []).append(instance_id)
103
104 entry = {
105 "instance_id": instance_id,
106 "semantic_name": _normalize_token(draft_object.semantic_name),
107 "description": draft_object.description,
108 "retrieval_query": draft_object.retrieval_query,
109 "mass_range": [float(draft_object.mass_range[0]), float(draft_object.mass_range[1])],
110 "target_size_range": [float(draft_object.target_size_range[0]), float(draft_object.target_size_range[1])],
111 "target_mass": _range_midpoint(draft_object.mass_range),
112 "target_size": _range_midpoint(draft_object.target_size_range),
113 "tags": list(draft_object.tags),
114 }
115
116 if draft_object.group_hint == "container":
117 entry["role"] = "container"
118 object_universe["container"].append(entry)
119 if draft.container_slot == draft_object.slot_name and container_instance_id is None:
120 container_instance_id = instance_id
121 elif draft_object.group_hint == "target":
122 object_universe["goal_objects"].append(entry)
123 set_goal_objects.append(instance_id)
124 elif draft_object.group_hint == "distractor":
125 object_universe["fail_objects"].append(entry)
126 set_fail_objects.append(instance_id)
127 elif draft_object.group_hint == "decor":
128 object_universe["decor_objects"].append(entry)

Callers 2

Calls 7

_validate_templateFunction · 0.85
_validate_draftFunction · 0.85
_build_instance_idFunction · 0.85
_normalize_tokenFunction · 0.85
_range_midpointFunction · 0.85
appendMethod · 0.80

Tested by

no test coverage detected