fix(herdr): support Herdr 0.8.0 pane allocation, agent prompt, and length limits
This commit is contained in:
@@ -458,6 +458,11 @@ def _pin_and_verify_resume(s, agent, cwd, uuid, degraded=False):
|
||||
actions.append(f"updated {id_name} id: {uuid}")
|
||||
|
||||
|
||||
def _sanitize(n):
|
||||
if len(n) <= 32:
|
||||
return n
|
||||
return f"{n[:16]}-{n[-15:]}"[:32]
|
||||
|
||||
yaml_sessions = d.get('herdr_sessions', [])
|
||||
yaml_session_names = {s['name'] for s in yaml_sessions if s.get('name')}
|
||||
alive_set = {(t['name'], t.get('server', 'default')) for t in herdr_sessions}
|
||||
@@ -474,7 +479,7 @@ if herdr_confirmed:
|
||||
if s.get('status') in ('terminated', 'archived', 'stopped'):
|
||||
continue
|
||||
srv = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
||||
if (name, srv) not in alive_set:
|
||||
if (name, srv) not in alive_set and (_sanitize(name), srv) not in alive_set:
|
||||
s['status'] = 'terminated'
|
||||
s['terminated_at'] = now_iso
|
||||
s['terminated_at_epoch'] = int(datetime.now(timezone.utc).timestamp())
|
||||
@@ -488,7 +493,7 @@ if herdr_confirmed:
|
||||
if herdr_confirmed:
|
||||
for t in herdr_sessions:
|
||||
name = t['name']
|
||||
if name in yaml_session_names:
|
||||
if name in yaml_session_names or any(_sanitize(y) == name for y in yaml_session_names):
|
||||
continue
|
||||
workspace_root = os.environ.get('WORKSPACE_ROOT')
|
||||
if not workspace_root:
|
||||
|
||||
Reference in New Issue
Block a user