job-dispatch.py: Send job DM to sidechat directly\n\nWhen sidechat.create=true, the job DM now goes to the sidechat\nitself (via thread ID), not to main chat. Keeps main clean;\nthe sidechat IS the workspace.

This commit is contained in:
operator-main
2026-10-04 03:11:11 +00:00
parent 39e47ab2ef
commit 942f37e21c
+14 -4
View File
@@ -12,6 +12,7 @@ Part of the JOB system (see docs/JOB-SPEC.md).
""" """
import sys import sys
import re
import os import os
import json import json
import subprocess import subprocess
@@ -156,21 +157,30 @@ def main():
if sidechat_cfg.get("create", False): if sidechat_cfg.get("create", False):
# Create sidechat in sender's (opm's) context # Create sidechat in sender's (opm's) context
# Then send the job DM DIRECTLY to the sidechat, not main.
# This keeps main chat clean; the sidechat IS the job workspace.
print(f"Creating sidechat for job {job_id}...", file=sys.stderr) print(f"Creating sidechat for job {job_id}...", file=sys.stderr)
sidechat_url = create_sidechat("opm", dry_run=dry_run) sidechat_url = create_sidechat("opm", dry_run=dry_run)
if sidechat_url: if sidechat_url:
# Render name template for display # Extract thread ID from URL (https://muse.ai/thread/<uuid>)
m = re.search(r"/thread/([a-f0-9-]+)", sidechat_url)
if m:
thread_id = m.group(1)
target = thread_id # DM goes directly to sidechat
name_tmpl = sidechat_cfg.get("name_template", "job-{job_name}-{date}") name_tmpl = sidechat_cfg.get("name_template", "job-{job_name}-{date}")
sc_name = render_prompt(name_tmpl, variables) sc_name = render_prompt(name_tmpl, variables)
dm_message += f"\n\n[Sidechat created: {sc_name}]\nWork in this side chat. URL: {sidechat_url}"
target = "main" # DM goes to main, directs to sidechat
log_event("job_sidechat_created", { log_event("job_sidechat_created", {
"job_id": job_id, "job_id": job_id,
"sidechat_url": sidechat_url, "sidechat_url": sidechat_url,
"sidechat_name": sc_name, "sidechat_name": sc_name,
"thread_id": thread_id,
}) })
print(f"Sidechat created: {sc_name} ({thread_id})", file=sys.stderr)
else: else:
print(f"Warning: Failed to create sidechat, proceeding without", file=sys.stderr) print(f"Warning: Could not parse thread ID from {sidechat_url}", file=sys.stderr)
target = "main"
else:
print(f"Warning: Failed to create sidechat, falling back to main", file=sys.stderr)
target = "main" target = "main"
else: else:
target = "main" target = "main"