mirror of
https://github.com/0xWheatyz/handler.git
synced 2026-09-03 15:16:26 +00:00
Extend the model picker to schedules
schedules.model_id (migration 0013) pins every fired run of a recurring spawn to a registered model backend, exactly like a hand-spawned agent: the worker copies it into each firing's spawn payload, the launched agent records the pin, and resumes stay on the same backend. The Schedules form gets the same Model dropdown as the spawn form (Claude subscription by default), with a badge in the schedules table. Create/update routes fail fast on a missing or disabled backend so a stale selection bounces immediately instead of every firing failing asynchronously in Activity; a backend deleted later still fails each firing visibly rather than silently falling back to the subscription. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DzDofD7gP63WpeLG8vEdZu
This commit is contained in:
@@ -236,7 +236,9 @@ What the dashboard can now do (all state-changing actions require `ADMIN_TOKEN`)
|
|||||||
enqueues a `sync` command so the worker clones it. Manual mode (existing `root_dir`)
|
enqueues a `sync` command so the worker clones it. Manual mode (existing `root_dir`)
|
||||||
still works; every project with a remote gets a **Pull now** button, and spawn always
|
still works; every project with a remote gets a **Pull now** button, and spawn always
|
||||||
pulls first.
|
pulls first.
|
||||||
- **Schedules** — recurring agent spawns: a name prefix, a prompt, and an interval. The
|
- **Schedules** — recurring agent spawns: a name prefix, a prompt, an interval, and
|
||||||
|
optionally a **model backend** (the same dropdown the spawn form has — every fired run
|
||||||
|
spawns on it). The
|
||||||
worker fires each due schedule as a normal queued `spawn` with a timestamped agent name
|
worker fires each due schedule as a normal queued `spawn` with a timestamped agent name
|
||||||
(`nightly-20260710-090000`), so runs are fresh, stateless agents and show up in
|
(`nightly-20260710-090000`), so runs are fresh, stateless agents and show up in
|
||||||
Activity. The canonical prompt keeps its state in the repo: *"Read @notes.md, continue
|
Activity. The canonical prompt keeps its state in the repo: *"Read @notes.md, continue
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ thing a **model backend** changes is the environment of that one agent's process
|
|||||||
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | `1` (skip sidecar calls a local endpoint won't serve; override via the row's env map) |
|
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | `1` (skip sidecar calls a local endpoint won't serve; override via the row's env map) |
|
||||||
|
|
||||||
Register backends on the dashboard's **Claude → Models** tab (or `POST /claude/models`),
|
Register backends on the dashboard's **Claude → Models** tab (or `POST /claude/models`),
|
||||||
then pick one from the **Model** dropdown when spawning an agent. No selection = the
|
then pick one from the **Model** dropdown when spawning an agent — or on a **Schedule**,
|
||||||
|
so every fired run spawns on that backend. No selection = the
|
||||||
worker's logged-in Claude subscription, exactly as before. The agent is *pinned* to its
|
worker's logged-in Claude subscription, exactly as before. The agent is *pinned* to its
|
||||||
backend: resumes come back up on the same one, and deleting a backend makes resumes of
|
backend: resumes come back up on the same one, and deleting a backend makes resumes of
|
||||||
its agents fail loudly rather than silently falling back to the subscription.
|
its agents fail loudly rather than silently falling back to the subscription.
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ function intervalLabel(seconds: number): string {
|
|||||||
return `every ${seconds}s`;
|
return `every ${seconds}s`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const emptyForm = { name_prefix: "", task: "", interval: "3600", role: "" };
|
const emptyForm = { name_prefix: "", task: "", interval: "3600", role: "", model_id: "" };
|
||||||
|
|
||||||
export function SchedulesSection() {
|
export function SchedulesSection() {
|
||||||
const s = useDashboard();
|
const s = useDashboard();
|
||||||
@@ -46,6 +46,21 @@ export function SchedulesSection() {
|
|||||||
() => s.projects.map((p) => ({ value: p.id, label: p.id })),
|
() => s.projects.map((p) => ({ value: p.id, label: p.id })),
|
||||||
[s.projects],
|
[s.projects],
|
||||||
);
|
);
|
||||||
|
/* Same choice the spawn form offers: Claude subscription by default, plus every
|
||||||
|
* enabled backend from the Claude page's Models tab. Every fired run spawns on it. */
|
||||||
|
const modelOpts = useMemo(
|
||||||
|
() => [
|
||||||
|
{ value: "", label: "Claude (subscription)" },
|
||||||
|
...s.claudeModels
|
||||||
|
.filter((m) => m.enabled)
|
||||||
|
.map((m) => ({ value: String(m.id), label: `${m.name} (${m.model})` })),
|
||||||
|
],
|
||||||
|
[s.claudeModels],
|
||||||
|
);
|
||||||
|
const modelName = useMemo(() => {
|
||||||
|
const byId = new Map(s.claudeModels.map((m) => [m.id, m.name]));
|
||||||
|
return (id: number | null | undefined) => (id == null ? null : byId.get(id) ?? `#${id}`);
|
||||||
|
}, [s.claudeModels]);
|
||||||
|
|
||||||
const create = async () => {
|
const create = async () => {
|
||||||
const ok = await s.createSchedule(s.selectedProjectId, {
|
const ok = await s.createSchedule(s.selectedProjectId, {
|
||||||
@@ -53,6 +68,7 @@ export function SchedulesSection() {
|
|||||||
task: form.task,
|
task: form.task,
|
||||||
interval_seconds: Number(form.interval),
|
interval_seconds: Number(form.interval),
|
||||||
role: form.role,
|
role: form.role,
|
||||||
|
model_id: form.model_id,
|
||||||
});
|
});
|
||||||
if (ok) setForm(emptyForm);
|
if (ok) setForm(emptyForm);
|
||||||
};
|
};
|
||||||
@@ -107,6 +123,12 @@ export function SchedulesSection() {
|
|||||||
onChange={(v) => setForm({ ...form, role: v })}
|
onChange={(v) => setForm({ ...form, role: v })}
|
||||||
options={ROLE_OPTS}
|
options={ROLE_OPTS}
|
||||||
/>
|
/>
|
||||||
|
<Select
|
||||||
|
label="Model"
|
||||||
|
value={form.model_id}
|
||||||
|
onChange={(v) => setForm({ ...form, model_id: v })}
|
||||||
|
options={modelOpts}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt14">
|
<div className="mt14">
|
||||||
<Textarea
|
<Textarea
|
||||||
@@ -167,6 +189,12 @@ export function SchedulesSection() {
|
|||||||
<Badge tone="info">{sc.role}</Badge>
|
<Badge tone="info">{sc.role}</Badge>
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
|
{sc.model_id != null ? (
|
||||||
|
<>
|
||||||
|
{" "}
|
||||||
|
<Badge tone="warning">{modelName(sc.model_id)}</Badge>
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
</td>
|
</td>
|
||||||
<td className="mono faint">{sc.project_id}</td>
|
<td className="mono faint">{sc.project_id}</td>
|
||||||
<td className="nowrap">{intervalLabel(sc.interval_seconds)}</td>
|
<td className="nowrap">{intervalLabel(sc.interval_seconds)}</td>
|
||||||
|
|||||||
@@ -231,6 +231,8 @@ export interface ScheduleBody {
|
|||||||
task: string;
|
task: string;
|
||||||
interval_seconds: number;
|
interval_seconds: number;
|
||||||
role: string;
|
role: string;
|
||||||
|
/* Model backend id as a select value; "" = the Claude subscription. */
|
||||||
|
model_id: string;
|
||||||
}
|
}
|
||||||
export interface ApprovalBody {
|
export interface ApprovalBody {
|
||||||
branch: string;
|
branch: string;
|
||||||
@@ -496,7 +498,8 @@ export function DashboardProvider({
|
|||||||
const s = sectionRef.current;
|
const s = sectionRef.current;
|
||||||
const run = selectedRunRef.current;
|
const run = selectedRunRef.current;
|
||||||
if (run) await loadRun(run.projectId, run.name);
|
if (run) await loadRun(run.projectId, run.name);
|
||||||
if (s === "agents") await loadClaudeModels(); // the spawn form's model dropdown
|
// The spawn/schedule forms' model dropdowns.
|
||||||
|
if (s === "agents" || s === "schedules") await loadClaudeModels();
|
||||||
if (s === "approvals") await loadApprovals(selectedProjectRef.current);
|
if (s === "approvals") await loadApprovals(selectedProjectRef.current);
|
||||||
if (s === "servers") await loadHosts();
|
if (s === "servers") await loadHosts();
|
||||||
if (s === "activity") await loadCommands();
|
if (s === "activity") await loadCommands();
|
||||||
@@ -527,7 +530,7 @@ export function DashboardProvider({
|
|||||||
(s: Section) => {
|
(s: Section) => {
|
||||||
setSectionRaw(s);
|
setSectionRaw(s);
|
||||||
setCmd({ text: "", error: false, busy: false });
|
setCmd({ text: "", error: false, busy: false });
|
||||||
if (s === "agents") void loadClaudeModels();
|
if (s === "agents" || s === "schedules") void loadClaudeModels();
|
||||||
if (s === "approvals") void loadApprovals(selectedProjectRef.current);
|
if (s === "approvals") void loadApprovals(selectedProjectRef.current);
|
||||||
if (s === "servers") void loadHosts();
|
if (s === "servers") void loadHosts();
|
||||||
if (s === "activity") void loadCommands();
|
if (s === "activity") void loadCommands();
|
||||||
@@ -894,6 +897,7 @@ export function DashboardProvider({
|
|||||||
task: b.task.trim(),
|
task: b.task.trim(),
|
||||||
interval_seconds: b.interval_seconds,
|
interval_seconds: b.interval_seconds,
|
||||||
role: b.role || null,
|
role: b.role || null,
|
||||||
|
model_id: b.model_id ? Number(b.model_id) : null,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
setCmd({
|
setCmd({
|
||||||
|
|||||||
@@ -135,6 +135,8 @@ export interface Schedule {
|
|||||||
role?: string | null;
|
role?: string | null;
|
||||||
worktree?: string | null;
|
worktree?: string | null;
|
||||||
subdir?: string | null;
|
subdir?: string | null;
|
||||||
|
/* Model backend every fired run spawns on (see ClaudeModel); null = subscription. */
|
||||||
|
model_id?: number | null;
|
||||||
interval_seconds: number;
|
interval_seconds: number;
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
next_run_at: string;
|
next_run_at: string;
|
||||||
|
|||||||
@@ -33,6 +33,20 @@ def _schedule_or_404(conn: Connection, schedule_id: int) -> dict:
|
|||||||
return schedule
|
return schedule
|
||||||
|
|
||||||
|
|
||||||
|
def _check_model(conn: Connection, model_id: int | None) -> None:
|
||||||
|
"""Fail-fast for the model dropdown, mirroring the spawn route: a stale or disabled
|
||||||
|
selection bounces now instead of every firing failing asynchronously in Activity."""
|
||||||
|
if model_id is None:
|
||||||
|
return
|
||||||
|
model = repo.get_claude_model(conn, model_id)
|
||||||
|
if model is None:
|
||||||
|
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=f"model {model_id} not found")
|
||||||
|
if not model["enabled"]:
|
||||||
|
raise HTTPException(
|
||||||
|
status.HTTP_400_BAD_REQUEST, detail=f"model backend '{model['name']}' is disabled"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/schedules", response_model=list[ScheduleOut])
|
@router.get("/schedules", response_model=list[ScheduleOut])
|
||||||
def list_all_schedules(conn: Connection = Depends(db_conn)) -> list[dict]:
|
def list_all_schedules(conn: Connection = Depends(db_conn)) -> list[dict]:
|
||||||
return repo.list_schedules(conn)
|
return repo.list_schedules(conn)
|
||||||
@@ -56,6 +70,7 @@ def create_schedule(
|
|||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status.HTTP_404_NOT_FOUND, detail=f"project '{project_id}' not found"
|
status.HTTP_404_NOT_FOUND, detail=f"project '{project_id}' not found"
|
||||||
)
|
)
|
||||||
|
_check_model(conn, body.model_id)
|
||||||
# next_run_at starts at now, so the first run fires on the worker's next pass — the
|
# next_run_at starts at now, so the first run fires on the worker's next pass — the
|
||||||
# operator sees the schedule work immediately instead of waiting a full interval.
|
# operator sees the schedule work immediately instead of waiting a full interval.
|
||||||
return repo.create_schedule(
|
return repo.create_schedule(
|
||||||
@@ -68,6 +83,7 @@ def create_schedule(
|
|||||||
role=body.role,
|
role=body.role,
|
||||||
worktree=body.worktree,
|
worktree=body.worktree,
|
||||||
subdir=body.subdir,
|
subdir=body.subdir,
|
||||||
|
model_id=body.model_id,
|
||||||
enabled=body.enabled,
|
enabled=body.enabled,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -82,6 +98,8 @@ def update_schedule(
|
|||||||
) -> dict:
|
) -> dict:
|
||||||
_schedule_or_404(conn, schedule_id)
|
_schedule_or_404(conn, schedule_id)
|
||||||
fields = body.model_dump(exclude_unset=True)
|
fields = body.model_dump(exclude_unset=True)
|
||||||
|
if fields.get("model_id") is not None:
|
||||||
|
_check_model(conn, fields["model_id"])
|
||||||
return repo.update_schedule(conn, schedule_id, **fields)
|
return repo.update_schedule(conn, schedule_id, **fields)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -221,7 +221,10 @@ class HostOut(BaseModel):
|
|||||||
class ScheduleIn(BaseModel):
|
class ScheduleIn(BaseModel):
|
||||||
"""A recurring agent spawn: every ``interval_seconds``, run ``task`` as a fresh
|
"""A recurring agent spawn: every ``interval_seconds``, run ``task`` as a fresh
|
||||||
agent named ``<name_prefix>-<timestamp>``. The first run fires on the worker's next
|
agent named ``<name_prefix>-<timestamp>``. The first run fires on the worker's next
|
||||||
pass (``next_run_at`` starts at now)."""
|
pass (``next_run_at`` starts at now). ``model_id`` picks a registered model backend
|
||||||
|
(``/claude/models``) for every fired run; omit it for the Claude subscription."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
name_prefix: str = Field(min_length=1)
|
name_prefix: str = Field(min_length=1)
|
||||||
task: str = Field(min_length=1)
|
task: str = Field(min_length=1)
|
||||||
@@ -229,21 +232,25 @@ class ScheduleIn(BaseModel):
|
|||||||
role: Role | None = None
|
role: Role | None = None
|
||||||
worktree: str | None = None
|
worktree: str | None = None
|
||||||
subdir: str | None = None
|
subdir: str | None = None
|
||||||
|
model_id: int | None = None
|
||||||
enabled: bool = True
|
enabled: bool = True
|
||||||
|
|
||||||
|
|
||||||
class ScheduleUpdateIn(BaseModel):
|
class ScheduleUpdateIn(BaseModel):
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
name_prefix: str | None = Field(default=None, min_length=1)
|
name_prefix: str | None = Field(default=None, min_length=1)
|
||||||
task: str | None = Field(default=None, min_length=1)
|
task: str | None = Field(default=None, min_length=1)
|
||||||
interval_seconds: int | None = Field(default=None, ge=10)
|
interval_seconds: int | None = Field(default=None, ge=10)
|
||||||
role: Role | None = None
|
role: Role | None = None
|
||||||
worktree: str | None = None
|
worktree: str | None = None
|
||||||
subdir: str | None = None
|
subdir: str | None = None
|
||||||
|
model_id: int | None = None
|
||||||
enabled: bool | None = None
|
enabled: bool | None = None
|
||||||
|
|
||||||
|
|
||||||
class ScheduleOut(BaseModel):
|
class ScheduleOut(BaseModel):
|
||||||
model_config = ConfigDict(from_attributes=True)
|
model_config = ConfigDict(from_attributes=True, protected_namespaces=())
|
||||||
|
|
||||||
id: int
|
id: int
|
||||||
project_id: str
|
project_id: str
|
||||||
@@ -252,6 +259,7 @@ class ScheduleOut(BaseModel):
|
|||||||
role: Role | None = None
|
role: Role | None = None
|
||||||
worktree: str | None = None
|
worktree: str | None = None
|
||||||
subdir: str | None = None
|
subdir: str | None = None
|
||||||
|
model_id: int | None = None
|
||||||
interval_seconds: int
|
interval_seconds: int
|
||||||
enabled: bool
|
enabled: bool
|
||||||
next_run_at: datetime
|
next_run_at: datetime
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[7839,["171","static/chunks/171-7eacb8f2c45d0186.js","263","static/chunks/app/activity/page-809b415dd18cb14e.js"],"default",1]
|
3:I[7839,["171","static/chunks/171-19de960b70cee25e.js","263","static/chunks/app/activity/page-809b415dd18cb14e.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["activity",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["activity",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","activity","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["activity",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["activity",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","activity","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[2506,["171","static/chunks/171-7eacb8f2c45d0186.js","718","static/chunks/app/agents/page-65cc70b94cb9abd3.js"],"default",1]
|
3:I[2506,["171","static/chunks/171-19de960b70cee25e.js","718","static/chunks/app/agents/page-65cc70b94cb9abd3.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["agents",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["agents",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","agents","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["agents",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["agents",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","agents","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[2651,["171","static/chunks/171-7eacb8f2c45d0186.js","163","static/chunks/app/approvals/page-8d5622be330f4d01.js"],"default",1]
|
3:I[2651,["171","static/chunks/171-19de960b70cee25e.js","163","static/chunks/app/approvals/page-8d5622be330f4d01.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["approvals",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["approvals",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","approvals","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["approvals",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["approvals",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","approvals","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[6529,["171","static/chunks/171-7eacb8f2c45d0186.js","877","static/chunks/app/claude/page-235e137771d99edc.js"],"default",1]
|
3:I[6529,["171","static/chunks/171-19de960b70cee25e.js","877","static/chunks/app/claude/page-235e137771d99edc.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["claude",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["claude",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","claude","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["claude",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["claude",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","claude","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[3807,["171","static/chunks/171-7eacb8f2c45d0186.js","931","static/chunks/app/page-cf68f34e95b90a40.js"],"default",1]
|
3:I[3807,["171","static/chunks/171-19de960b70cee25e.js","931","static/chunks/app/page-cf68f34e95b90a40.js"],"default",1]
|
||||||
4:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
4:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
5:I[4707,[],""]
|
5:I[4707,[],""]
|
||||||
6:I[6423,[],""]
|
6:I[6423,[],""]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
|||||||
3:I[6374,["626","static/chunks/app/login/page-b08c6695be5632dd.js"],"default",1]
|
3:I[6374,["626","static/chunks/app/login/page-b08c6695be5632dd.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[3641,["171","static/chunks/171-7eacb8f2c45d0186.js","27","static/chunks/app/repositories/page-fb0c29b8dc7ed817.js"],"default",1]
|
3:I[3641,["171","static/chunks/171-19de960b70cee25e.js","27","static/chunks/app/repositories/page-fb0c29b8dc7ed817.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["repositories",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["repositories",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","repositories","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["repositories",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["repositories",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","repositories","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[5124,["171","static/chunks/171-7eacb8f2c45d0186.js","95","static/chunks/app/schedules/page-db675df274be2677.js"],"default",1]
|
3:I[5124,["171","static/chunks/171-19de960b70cee25e.js","95","static/chunks/app/schedules/page-4398c9c829e1b9fd.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["schedules",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["schedules",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","schedules","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["schedules",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["schedules",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","schedules","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[4646,["171","static/chunks/171-7eacb8f2c45d0186.js","664","static/chunks/app/servers/page-7cfc66d88412e3d1.js"],"default",1]
|
3:I[4646,["171","static/chunks/171-19de960b70cee25e.js","664","static/chunks/app/servers/page-7cfc66d88412e3d1.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["servers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["servers",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","servers","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["servers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["servers",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","servers","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
|||||||
2:I[9107,[],"ClientPageRoot"]
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
3:I[9475,["171","static/chunks/171-7eacb8f2c45d0186.js","856","static/chunks/app/shared/page-dc7068fcf86ab8e4.js"],"default",1]
|
3:I[9475,["171","static/chunks/171-19de960b70cee25e.js","856","static/chunks/app/shared/page-dc7068fcf86ab8e4.js"],"default",1]
|
||||||
4:I[4707,[],""]
|
4:I[4707,[],""]
|
||||||
5:I[6423,[],""]
|
5:I[6423,[],""]
|
||||||
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-7eacb8f2c45d0186.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
6:I[5520,["258","static/chunks/258-022159d3c3089cd0.js","171","static/chunks/171-19de960b70cee25e.js","185","static/chunks/app/layout-c7c117ef7b86bf6f.js"],"AppFrame"]
|
||||||
0:["KmcUQ9fxOry3HfFR_U9HV",[[["",{"children":["shared",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["shared",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","shared","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
0:["4cEQAcmEL0RnY9yw8HjTQ",[[["",{"children":["shared",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["shared",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","shared","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/bbd6ee1e7265be74.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
||||||
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Handler · Claude Activity"}],["$","meta","3",{"name":"description","content":"Monitor and manage Claude Code agents across projects."}],["$","link","4",{"rel":"icon","href":"/icon.svg?bab509b45a421e43","type":"image/svg+xml","sizes":"any"}]]
|
||||||
1:null
|
1:null
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ def fire_due_schedules(now: datetime | None = None) -> int:
|
|||||||
for sched in due:
|
for sched in due:
|
||||||
name = f"{sched['name_prefix']}-{now.strftime('%Y%m%d-%H%M%S')}"
|
name = f"{sched['name_prefix']}-{now.strftime('%Y%m%d-%H%M%S')}"
|
||||||
payload: dict = {"task": sched["task"]}
|
payload: dict = {"task": sched["task"]}
|
||||||
for key in ("role", "worktree", "subdir"):
|
for key in ("role", "worktree", "subdir", "model_id"):
|
||||||
if sched.get(key):
|
if sched.get(key):
|
||||||
payload[key] = sched[key]
|
payload[key] = sched[key]
|
||||||
with connection() as conn:
|
with connection() as conn:
|
||||||
|
|||||||
@@ -627,6 +627,7 @@ def create_schedule(
|
|||||||
role: str | None = None,
|
role: str | None = None,
|
||||||
worktree: str | None = None,
|
worktree: str | None = None,
|
||||||
subdir: str | None = None,
|
subdir: str | None = None,
|
||||||
|
model_id: int | None = None,
|
||||||
enabled: bool = True,
|
enabled: bool = True,
|
||||||
) -> dict:
|
) -> dict:
|
||||||
result = conn.execute(
|
result = conn.execute(
|
||||||
@@ -637,6 +638,7 @@ def create_schedule(
|
|||||||
role=role,
|
role=role,
|
||||||
worktree=worktree,
|
worktree=worktree,
|
||||||
subdir=subdir,
|
subdir=subdir,
|
||||||
|
model_id=model_id,
|
||||||
interval_seconds=interval_seconds,
|
interval_seconds=interval_seconds,
|
||||||
enabled=enabled,
|
enabled=enabled,
|
||||||
next_run_at=next_run_at,
|
next_run_at=next_run_at,
|
||||||
@@ -653,6 +655,7 @@ def update_schedule(conn: Connection, schedule_id: int, **fields: Any) -> dict |
|
|||||||
"role",
|
"role",
|
||||||
"worktree",
|
"worktree",
|
||||||
"subdir",
|
"subdir",
|
||||||
|
"model_id",
|
||||||
"interval_seconds",
|
"interval_seconds",
|
||||||
"enabled",
|
"enabled",
|
||||||
"next_run_at",
|
"next_run_at",
|
||||||
|
|||||||
@@ -452,6 +452,10 @@ schedules = Table(
|
|||||||
Column("name_prefix", String, nullable=False), # runs are named <prefix>-<timestamp>
|
Column("name_prefix", String, nullable=False), # runs are named <prefix>-<timestamp>
|
||||||
Column("task", String, nullable=False), # the prompt each run starts with
|
Column("task", String, nullable=False), # the prompt each run starts with
|
||||||
Column("role", String),
|
Column("role", String),
|
||||||
|
# Model backend (claude_models row) every fired run spawns on; null = the Claude
|
||||||
|
# subscription. No FK, same rationale as agents.model_id: a deleted backend makes the
|
||||||
|
# fired spawn fail visibly in Activity instead of breaking the schedule row.
|
||||||
|
Column("model_id", BigInteger),
|
||||||
Column("worktree", String), # optional branch for a per-run git worktree
|
Column("worktree", String), # optional branch for a per-run git worktree
|
||||||
Column("subdir", String), # optional subdir under the project root
|
Column("subdir", String), # optional subdir under the project root
|
||||||
Column("interval_seconds", BigInteger, nullable=False),
|
Column("interval_seconds", BigInteger, nullable=False),
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
"""schedules pick a model backend
|
||||||
|
|
||||||
|
Revision ID: 0013_schedule_model
|
||||||
|
Revises: 0012_claude_models
|
||||||
|
Create Date: 2026-07-29
|
||||||
|
|
||||||
|
The spawn form's model dropdown, extended to recurring spawns: ``schedules.model_id``
|
||||||
|
names the ``claude_models`` backend every fired run spawns on (null = the Claude
|
||||||
|
subscription). The worker copies it into each firing's spawn payload, so the launched
|
||||||
|
agent gets pinned exactly as a hand-spawned one would. No FK, same rationale as
|
||||||
|
``agents.model_id``: deleting a backend must make the next firing fail visibly in
|
||||||
|
Activity, not break the schedule row.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from collections.abc import Sequence
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
revision: str = "0013_schedule_model"
|
||||||
|
down_revision: str | None = "0012_claude_models"
|
||||||
|
branch_labels: str | Sequence[str] | None = None
|
||||||
|
depends_on: str | Sequence[str] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.add_column("schedules", sa.Column("model_id", sa.BigInteger()))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
with op.batch_alter_table("schedules", schema=None) as batch_op:
|
||||||
|
batch_op.drop_column("model_id")
|
||||||
@@ -323,6 +323,59 @@ def test_spawn_route_and_worker_pass_model_through(client, auth, env, fake_launc
|
|||||||
assert r.json()[0]["model_id"] == row["id"]
|
assert r.json()[0]["model_id"] == row["id"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_schedule_model_validated_stored_and_fired(client, auth, env, fake_launch):
|
||||||
|
root = env["tmp"] / "proj"
|
||||||
|
_write_mise(root)
|
||||||
|
_register_project(root)
|
||||||
|
with get_engine().begin() as conn:
|
||||||
|
row = repo.create_claude_model(conn, "qwen3-coder", "http://llm.local:4000", "qwen")
|
||||||
|
off = repo.create_claude_model(conn, "off", "http://x", "m", enabled=False)
|
||||||
|
|
||||||
|
# Fail-fast at create/update time, mirroring the spawn route.
|
||||||
|
r = client.post(
|
||||||
|
"/projects/proj/schedules",
|
||||||
|
json={"name_prefix": "nightly", "task": "t", "interval_seconds": 60, "model_id": 999},
|
||||||
|
headers=auth,
|
||||||
|
)
|
||||||
|
assert r.status_code == 400 and "not found" in r.json()["detail"]
|
||||||
|
r = client.post(
|
||||||
|
"/projects/proj/schedules",
|
||||||
|
json={"name_prefix": "nightly", "task": "t", "interval_seconds": 60,
|
||||||
|
"model_id": off["id"]},
|
||||||
|
headers=auth,
|
||||||
|
)
|
||||||
|
assert r.status_code == 400 and "disabled" in r.json()["detail"]
|
||||||
|
|
||||||
|
r = client.post(
|
||||||
|
"/projects/proj/schedules",
|
||||||
|
json={"name_prefix": "nightly", "task": "do it", "interval_seconds": 60,
|
||||||
|
"model_id": row["id"]},
|
||||||
|
headers=auth,
|
||||||
|
)
|
||||||
|
assert r.status_code == 201
|
||||||
|
sched = r.json()
|
||||||
|
assert sched["model_id"] == row["id"]
|
||||||
|
|
||||||
|
assert (
|
||||||
|
client.patch(f"/schedules/{sched['id']}", json={"model_id": 999}, headers=auth).status_code
|
||||||
|
== 400
|
||||||
|
)
|
||||||
|
# Clearing back to the subscription is an explicit null.
|
||||||
|
r = client.patch(f"/schedules/{sched['id']}", json={"model_id": None}, headers=auth)
|
||||||
|
assert r.status_code == 200 and r.json()["model_id"] is None
|
||||||
|
r = client.patch(f"/schedules/{sched['id']}", json={"model_id": row["id"]}, headers=auth)
|
||||||
|
assert r.status_code == 200 and r.json()["model_id"] == row["id"]
|
||||||
|
|
||||||
|
# The firing carries the pin into the spawn payload, and the launched agent gets it.
|
||||||
|
assert worker.fire_due_schedules() == 1
|
||||||
|
with connection() as conn:
|
||||||
|
command = repo.claim_next_command(conn, "w1")
|
||||||
|
assert command["payload"]["model_id"] == row["id"]
|
||||||
|
worker.execute_command(command)
|
||||||
|
assert fake_launch[0]["env"]["ANTHROPIC_MODEL"] == "qwen"
|
||||||
|
assert fake_launch[0]["agent"]["model_id"] == row["id"]
|
||||||
|
|
||||||
|
|
||||||
def test_cli_spawn_resolves_model_by_name(env, fake_launch, capsys):
|
def test_cli_spawn_resolves_model_by_name(env, fake_launch, capsys):
|
||||||
root = env["tmp"] / "proj"
|
root = env["tmp"] / "proj"
|
||||||
_write_mise(root)
|
_write_mise(root)
|
||||||
|
|||||||
Reference in New Issue
Block a user