- harness/es.py: append-only event store + проекции (образец — кооп-портал) - harness/levels.py: уровни 1с/1м/1ч/1д, контекст ∝ масштабу - harness/scheduler.py: уровневые потоки, идемпотентные тики, absorbed-стабы - harness/isolated_runner.py + _llm_worker.py: LLM-тик в сабпроцессе (глобальный asyncio-рантайм Strands не переживает 2+ create_harness) - cli.py: init/task/tasks/status/events + requeue (написан самим минутным агентом) - 9router: отдельный ключ sk-simbiot, модель auto (glm-5.3 первым)
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
|
|
class Node(object):
|
|
def __init__(self, tag, value, start_mark, end_mark):
|
|
self.tag = tag
|
|
self.value = value
|
|
self.start_mark = start_mark
|
|
self.end_mark = end_mark
|
|
def __repr__(self):
|
|
value = self.value
|
|
#if isinstance(value, list):
|
|
# if len(value) == 0:
|
|
# value = '<empty>'
|
|
# elif len(value) == 1:
|
|
# value = '<1 item>'
|
|
# else:
|
|
# value = '<%d items>' % len(value)
|
|
#else:
|
|
# if len(value) > 75:
|
|
# value = repr(value[:70]+u' ... ')
|
|
# else:
|
|
# value = repr(value)
|
|
value = repr(value)
|
|
return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value)
|
|
|
|
class ScalarNode(Node):
|
|
id = 'scalar'
|
|
def __init__(self, tag, value,
|
|
start_mark=None, end_mark=None, style=None):
|
|
self.tag = tag
|
|
self.value = value
|
|
self.start_mark = start_mark
|
|
self.end_mark = end_mark
|
|
self.style = style
|
|
|
|
class CollectionNode(Node):
|
|
def __init__(self, tag, value,
|
|
start_mark=None, end_mark=None, flow_style=None):
|
|
self.tag = tag
|
|
self.value = value
|
|
self.start_mark = start_mark
|
|
self.end_mark = end_mark
|
|
self.flow_style = flow_style
|
|
|
|
class SequenceNode(CollectionNode):
|
|
id = 'sequence'
|
|
|
|
class MappingNode(CollectionNode):
|
|
id = 'mapping'
|
|
|