catherd-cli 2.0.0-next.20261022182421 → 2.0.0-next.20261022200328
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -9
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/bin/catherd-mcp +1 -1
- package/plugin/skills/catherd/SKILL.md +1 -1
- package/src/entry/runs-command.ts +4 -1
- package/src/infra/supervisor.ts +1 -1
- package/src/services/capture.ts +1 -1
- package/src/services/protocol.ts +1 -1
- package/src/services/run-report.ts +2 -1
- package/src/services/summary.ts +18 -3
- package/web/dist/assets/{Brand-CsasrnDg.js → Brand-BZ37Usv9.js} +1 -1
- package/web/dist/assets/Brand-BZ37Usv9.js.br +0 -0
- package/web/dist/assets/Brand-BZ37Usv9.js.gz +0 -0
- package/web/dist/assets/{Modal-Xe1WI1-2.js → Modal-Cfsb-5wI.js} +1 -1
- package/web/dist/assets/Modal-Cfsb-5wI.js.br +0 -0
- package/web/dist/assets/Modal-Cfsb-5wI.js.gz +0 -0
- package/web/dist/assets/{Pressable-C8-T6Ed_.js → Pressable-CInPFWYq.js} +1 -1
- package/web/dist/assets/StatusChip-DNJGXpaM.js +153 -0
- package/web/dist/assets/StatusChip-DNJGXpaM.js.br +0 -0
- package/web/dist/assets/StatusChip-DNJGXpaM.js.gz +0 -0
- package/web/dist/assets/{_app-BLjKroiJ.js → _app-BRHXf361.js} +1 -1
- package/web/dist/assets/_app-BRHXf361.js.br +0 -0
- package/web/dist/assets/_app-BRHXf361.js.gz +0 -0
- package/web/dist/assets/{_runId-D2pfjMgO.js → _runId-BWlmGHgV.js} +1 -1
- package/web/dist/assets/_runId-BWlmGHgV.js.br +0 -0
- package/web/dist/assets/_runId-BWlmGHgV.js.gz +0 -0
- package/web/dist/assets/{drawer-Qv6pmnj0.js → drawer-DiBoCh3k.js} +1 -1
- package/web/dist/assets/drawer-DiBoCh3k.js.br +0 -0
- package/web/dist/assets/drawer-DiBoCh3k.js.gz +0 -0
- package/web/dist/assets/{index-DoDbR0X_.js → index-8eTsNUPE.js} +5 -5
- package/web/dist/assets/index-8eTsNUPE.js.br +0 -0
- package/web/dist/assets/index-8eTsNUPE.js.gz +0 -0
- package/web/dist/assets/{label-DFSYBc62.js → label-BLvEBSes.js} +1 -1
- package/web/dist/assets/label-BLvEBSes.js.br +0 -0
- package/web/dist/assets/label-BLvEBSes.js.gz +0 -0
- package/web/dist/assets/{link-Bxr2h_7-.js → link-CWPWkcE7.js} +1 -1
- package/web/dist/assets/link-CWPWkcE7.js.br +0 -0
- package/web/dist/assets/link-CWPWkcE7.js.gz +0 -0
- package/web/dist/assets/{login-lD5Y5ToX.js → login-DJ0JJ4Kh.js} +1 -1
- package/web/dist/assets/login-DJ0JJ4Kh.js.br +0 -0
- package/web/dist/assets/login-DJ0JJ4Kh.js.gz +0 -0
- package/web/dist/assets/{questions-BZVveTHL.js → questions-CIezu9MQ.js} +1 -1
- package/web/dist/assets/questions-CIezu9MQ.js.br +0 -0
- package/web/dist/assets/questions-CIezu9MQ.js.gz +0 -0
- package/web/dist/assets/{react-query.gen-Bu2yV-qJ.js → react-query.gen--d119q9w.js} +1 -1
- package/web/dist/assets/react-query.gen--d119q9w.js.br +0 -0
- package/web/dist/assets/{react-query.gen-Bu2yV-qJ.js.gz → react-query.gen--d119q9w.js.gz} +0 -0
- package/web/dist/assets/{runs-FLPX1t35.js → runs-CmNMqEUC.js} +1 -1
- package/web/dist/assets/runs-CmNMqEUC.js.br +0 -0
- package/web/dist/assets/runs-CmNMqEUC.js.gz +0 -0
- package/web/dist/assets/{setup-e6cWTQHR.js → setup-QG_DwH4K.js} +1 -1
- package/web/dist/assets/setup-QG_DwH4K.js.br +0 -0
- package/web/dist/assets/setup-QG_DwH4K.js.gz +0 -0
- package/web/dist/assets/table-i60Ln8uO.js +1 -0
- package/web/dist/assets/table-i60Ln8uO.js.br +0 -0
- package/web/dist/assets/table-i60Ln8uO.js.gz +0 -0
- package/web/dist/assets/{textfield-BzRFkxBF.js → textfield-JjDRdZq2.js} +1 -1
- package/web/dist/assets/textfield-JjDRdZq2.js.br +0 -0
- package/web/dist/assets/textfield-JjDRdZq2.js.gz +0 -0
- package/web/dist/assets/use-css-variable-CVkVc5hW.js +5 -0
- package/web/dist/assets/use-css-variable-CVkVc5hW.js.br +0 -0
- package/web/dist/assets/use-css-variable-CVkVc5hW.js.gz +0 -0
- package/web/dist/assets/{useMutation-ByvV_qcM.js → useMutation-fO0BlIlO.js} +1 -1
- package/web/dist/assets/useMutation-fO0BlIlO.js.br +0 -0
- package/web/dist/assets/useMutation-fO0BlIlO.js.gz +0 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/Brand-CsasrnDg.js.br +0 -0
- package/web/dist/assets/Brand-CsasrnDg.js.gz +0 -0
- package/web/dist/assets/Modal-Xe1WI1-2.js.br +0 -0
- package/web/dist/assets/Modal-Xe1WI1-2.js.gz +0 -0
- package/web/dist/assets/StatusChip-CM5Y95R8.js +0 -153
- package/web/dist/assets/StatusChip-CM5Y95R8.js.br +0 -0
- package/web/dist/assets/StatusChip-CM5Y95R8.js.gz +0 -0
- package/web/dist/assets/_app-BLjKroiJ.js.br +0 -0
- package/web/dist/assets/_app-BLjKroiJ.js.gz +0 -0
- package/web/dist/assets/_runId-D2pfjMgO.js.br +0 -0
- package/web/dist/assets/_runId-D2pfjMgO.js.gz +0 -0
- package/web/dist/assets/drawer-Qv6pmnj0.js.br +0 -0
- package/web/dist/assets/drawer-Qv6pmnj0.js.gz +0 -0
- package/web/dist/assets/index-DoDbR0X_.js.br +0 -0
- package/web/dist/assets/index-DoDbR0X_.js.gz +0 -0
- package/web/dist/assets/label-DFSYBc62.js.br +0 -0
- package/web/dist/assets/label-DFSYBc62.js.gz +0 -0
- package/web/dist/assets/link-Bxr2h_7-.js.br +0 -0
- package/web/dist/assets/link-Bxr2h_7-.js.gz +0 -0
- package/web/dist/assets/login-lD5Y5ToX.js.br +0 -0
- package/web/dist/assets/login-lD5Y5ToX.js.gz +0 -0
- package/web/dist/assets/questions-BZVveTHL.js.br +0 -0
- package/web/dist/assets/questions-BZVveTHL.js.gz +0 -0
- package/web/dist/assets/react-query.gen-Bu2yV-qJ.js.br +0 -0
- package/web/dist/assets/runs-FLPX1t35.js.br +0 -0
- package/web/dist/assets/runs-FLPX1t35.js.gz +0 -0
- package/web/dist/assets/setup-e6cWTQHR.js.br +0 -0
- package/web/dist/assets/setup-e6cWTQHR.js.gz +0 -0
- package/web/dist/assets/table-BVyBSngP.js +0 -1
- package/web/dist/assets/table-BVyBSngP.js.br +0 -0
- package/web/dist/assets/table-BVyBSngP.js.gz +0 -0
- package/web/dist/assets/textfield-BzRFkxBF.js.br +0 -0
- package/web/dist/assets/textfield-BzRFkxBF.js.gz +0 -0
- package/web/dist/assets/use-css-variable-BckMm7jP.js +0 -5
- package/web/dist/assets/use-css-variable-BckMm7jP.js.br +0 -0
- package/web/dist/assets/use-css-variable-BckMm7jP.js.gz +0 -0
- package/web/dist/assets/useMutation-ByvV_qcM.js.br +0 -0
- package/web/dist/assets/useMutation-ByvV_qcM.js.gz +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "catherd-cli",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.20261022200328",
|
|
4
4
|
"description": "Herds coding agents: autopilot builds from your own Claude Code session.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"autopilot",
|
|
@@ -47,18 +47,18 @@
|
|
|
47
47
|
"release:publish": "npm view catherd-cli@$npm_package_version version >/dev/null 2>&1 || bun test/pack-smoke.ts && changeset publish"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
50
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
51
51
|
"citty": "^0.2.2",
|
|
52
|
-
"zod": "^4.6.
|
|
52
|
+
"zod": "^4.6.7"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@changesets/cli": "^3.0.3",
|
|
56
|
-
"@commitlint/cli": "^21.2.
|
|
57
|
-
"@commitlint/config-conventional": "^21.2.
|
|
58
|
-
"@types/bun": "^1.4.
|
|
59
|
-
"lefthook": "^2.
|
|
60
|
-
"oxfmt": "^0.
|
|
61
|
-
"oxlint": "^1.
|
|
56
|
+
"@commitlint/cli": "^21.2.4",
|
|
57
|
+
"@commitlint/config-conventional": "^21.2.4",
|
|
58
|
+
"@types/bun": "^1.4.3",
|
|
59
|
+
"lefthook": "^2.2.2",
|
|
60
|
+
"oxfmt": "^0.74.0",
|
|
61
|
+
"oxlint": "^1.89.0",
|
|
62
62
|
"typescript": "^7.0.2"
|
|
63
63
|
},
|
|
64
64
|
"engines": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "catherd",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.20261022200328",
|
|
4
4
|
"description": "Herds coding agents: Claude plans and verifies, Codex, opencode or headless Claude Code workers write the code, and Jev picks the model and effort for each piece.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "47vigen",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "catherd",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.20261022200328",
|
|
4
4
|
"description": "Shared catherd orchestration, profiles and durable role results through the versioned MCP core.",
|
|
5
5
|
"author": { "name": "47vigen", "url": "https://github.com/47vigen" },
|
|
6
6
|
"homepage": "https://github.com/47vigen/catherd",
|
package/plugin/bin/catherd-mcp
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
# catherd's MCP launcher (spec 1.1 §12): the plugin's .mcp.json runs it. The release stamps VERSION
|
|
3
3
|
# (scripts/stamp-plugin-version.mjs), so the plugin always starts the server it was released with.
|
|
4
|
-
VERSION="2.0.0-next.
|
|
4
|
+
VERSION="2.0.0-next.20261022200328"
|
|
5
5
|
|
|
6
6
|
# a global catherd at this version (catherd init installs one): start it, no resolve at all
|
|
7
7
|
if command -v catherd >/dev/null 2>&1 && [ "$(catherd --version 2>/dev/null)" = "$VERSION" ]; then
|
|
@@ -16,7 +16,7 @@ it, not its driver. Your job is four things:
|
|
|
16
16
|
- carry the owner's answers to the questions the run parks;
|
|
17
17
|
- relay the finished report.
|
|
18
18
|
|
|
19
|
-
**Your first call is `status()`.** Its `version` must be the one this plugin pins, `catherd-cli@2.0.0-next.
|
|
19
|
+
**Your first call is `status()`.** Its `version` must be the one this plugin pins, `catherd-cli@2.0.0-next.20261022200328`. If it
|
|
20
20
|
differs, stop and tell the user to restart their host session so the plugin and its server match.
|
|
21
21
|
|
|
22
22
|
**You never edit product files and you never dispatch a role.** Every line of code, tests or docs comes from a
|
|
@@ -38,9 +38,12 @@ const movedNote = (g: SessionGroup["runs"][number]): string =>
|
|
|
38
38
|
/** One run at a glance: what is live, what finished, spend against the budget, landed milestones. */
|
|
39
39
|
export function formatRun(s: RunSummary, now: number = Date.now()): string[] {
|
|
40
40
|
const t = s.totals;
|
|
41
|
+
const end = s.ended ? Date.parse(s.ended.at) : now;
|
|
42
|
+
const mins = Math.round((end - Date.parse(s.createdAt)) / 60_000);
|
|
41
43
|
const lines = [
|
|
42
44
|
`run ${s.id} ${s.title}`,
|
|
43
|
-
` repo ${s.repo} · started ${s.createdAt} · ${
|
|
45
|
+
` repo ${s.repo} · started ${s.createdAt} · ${mins} min`,
|
|
46
|
+
...(s.ended ? [` Ended: ${s.ended.outcome} at ${s.ended.at}, took ${mins} min`] : []),
|
|
44
47
|
];
|
|
45
48
|
for (const q of s.questions) lines.push(` ${mark("warn")} parked ${q.milestone}: ${q.question}`);
|
|
46
49
|
for (const l of s.live) lines.push(` live ${l.name} ${l.rung} ${l.state} ${l.secs}s`);
|
package/src/infra/supervisor.ts
CHANGED
|
@@ -370,7 +370,7 @@ async function superviseHeld(spec: SuperviseSpec, hooks: SuperviseHooks): Promis
|
|
|
370
370
|
if (!stopped && groupAlive(child.pid)) await stopGroup(child.pid, spec.killGraceMs, spec.pollMs);
|
|
371
371
|
const info = finish({
|
|
372
372
|
code: child.signalCode ? null : code,
|
|
373
|
-
signal: child.signalCode
|
|
373
|
+
signal: child.signalCode == null ? null : String(child.signalCode),
|
|
374
374
|
reason: reason ?? "exited",
|
|
375
375
|
endedAt: new Date().toISOString(),
|
|
376
376
|
});
|
package/src/services/capture.ts
CHANGED
|
@@ -134,7 +134,7 @@ async function runOnce(
|
|
|
134
134
|
stderr,
|
|
135
135
|
exit: {
|
|
136
136
|
code: p.signalCode ? null : code,
|
|
137
|
-
signal: p.signalCode
|
|
137
|
+
signal: p.signalCode == null ? null : String(p.signalCode),
|
|
138
138
|
reason: timedOut ? "wall-timeout" : "exited",
|
|
139
139
|
endedAt: new Date().toISOString(),
|
|
140
140
|
},
|
package/src/services/protocol.ts
CHANGED
|
@@ -290,7 +290,7 @@ export function writeDigest(
|
|
|
290
290
|
"",
|
|
291
291
|
`Commit ${i.commit} · ${i.minutes} min${i.pausedMinutes ? ` (${i.pausedMinutes} min parked or paused left out)` : ""} · landed ${i.at}`,
|
|
292
292
|
...(i.commits?.length ? [`Commits: ${i.commits.join("; ")}`] : []),
|
|
293
|
-
`A-lines: ${aLines.length ? aLines.join("; ") :
|
|
293
|
+
`A-lines: ${aLines.length ? aLines.join("; ") : run.meta.aLines.length ? `not mapped to this milestone (none cited as A<n>): ${run.meta.aLines.join("; ")}` : "none"}`,
|
|
294
294
|
"",
|
|
295
295
|
"Lanes:",
|
|
296
296
|
...(lanes.length ? lanes : ["- none routed"]),
|
|
@@ -140,7 +140,8 @@ export function writeRunReport(
|
|
|
140
140
|
lines.push(
|
|
141
141
|
`## ${e.milestone}${title && title !== e.milestone ? `: ${title}` : ""}`,
|
|
142
142
|
"",
|
|
143
|
-
|
|
143
|
+
// the section heading above is the digest's own H1
|
|
144
|
+
digest.replace(/^# .*\n+/, "") || `Landed at ${e.commit.slice(0, 12)}.`,
|
|
144
145
|
"",
|
|
145
146
|
roundsLine(events, e.milestone),
|
|
146
147
|
...gateLines(run, e.milestone),
|
package/src/services/summary.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { type OpenQuestion, openQuestions } from "./questions.ts";
|
|
|
17
17
|
import { type DispatchState, listDispatches, liveDispatches } from "./dispatches.ts";
|
|
18
18
|
import { readDelivery, ROLE_THREAD_REFUSAL } from "../infra/delivery.ts";
|
|
19
19
|
import { type RunSession, sessionFacts } from "./session-view.ts";
|
|
20
|
+
import { readEvents } from "./run-events-store.ts";
|
|
20
21
|
import type { Deps } from "./ports.ts";
|
|
21
22
|
import { orchestratorWait, type OrchestratorWait } from "./orchestrator-wait.ts";
|
|
22
23
|
import {
|
|
@@ -49,6 +50,8 @@ export interface RunSummary {
|
|
|
49
50
|
/** the session that continued it, when another did */
|
|
50
51
|
continuedIn: string | null;
|
|
51
52
|
stateTail: string[];
|
|
53
|
+
/** the run's `run.ended`: its outcome and when; state.md still says what came next, so the tail drops that */
|
|
54
|
+
ended?: { at: string; outcome: string } | null;
|
|
52
55
|
live: { name: string; rung: string; state: DispatchState; secs: number; dispatchId: string }[];
|
|
53
56
|
totals: { runs: number; ok: number; notOk: string[]; tokens: Tokens; costUsd: number; wallMinutes: number };
|
|
54
57
|
/** native subagent runs, as the orchestrator reported them: reported, not measured (spec §14) */
|
|
@@ -74,7 +77,16 @@ export function summarizeRun(deps: Deps, run: Run): RunSummary {
|
|
|
74
77
|
warnings.push(`daemon: ${errorMessage(e)}`);
|
|
75
78
|
}
|
|
76
79
|
const { records, corrupt } = readRecords(run);
|
|
80
|
+
let ended: RunSummary["ended"] = null;
|
|
81
|
+
try {
|
|
82
|
+
const e = readEvents(run).find((x) => x.type === "run.ended");
|
|
83
|
+
if (e?.type === "run.ended") ended = { at: e.at, outcome: e.outcome };
|
|
84
|
+
} catch (e) {
|
|
85
|
+
warnings.push(`events: ${errorMessage(e)}`);
|
|
86
|
+
}
|
|
77
87
|
const live = liveDispatches(run, now);
|
|
88
|
+
// an ended run's clock stops at run.ended: its wall minutes and its minute budget
|
|
89
|
+
const until = ended ? Date.parse(ended.at) : now;
|
|
78
90
|
const recorded = new Set(records.map((r) => r.dispatchId));
|
|
79
91
|
const agents = readAgentRuns(run);
|
|
80
92
|
const jev = readJsonl<{ source?: string }>(runPaths(run.dir).jev).rows;
|
|
@@ -86,7 +98,7 @@ export function summarizeRun(deps: Deps, run: Run): RunSummary {
|
|
|
86
98
|
for (const c of pinned) warnings.push(`pinned: ${c}; dispatch keeps the pinned value (run_pin re-pins)`);
|
|
87
99
|
try {
|
|
88
100
|
budget = budgetStatus(
|
|
89
|
-
spendOf(run, records, live,
|
|
101
|
+
spendOf(run, records, live, until),
|
|
90
102
|
deps.profiles.budgetFor?.(run.meta.repo) ?? deps.profiles.forRepo(run.meta.repo).budget,
|
|
91
103
|
);
|
|
92
104
|
} catch (e) {
|
|
@@ -119,7 +131,10 @@ export function summarizeRun(deps: Deps, run: Run): RunSummary {
|
|
|
119
131
|
repo: run.meta.repo,
|
|
120
132
|
createdAt: run.meta.createdAt,
|
|
121
133
|
...sessionFacts(run),
|
|
122
|
-
|
|
134
|
+
ended,
|
|
135
|
+
stateTail: nonBlankLines(runPaths(run.dir).state)
|
|
136
|
+
.filter((l) => !ended || !/^(Next|Protocol next): /.test(l))
|
|
137
|
+
.slice(-3),
|
|
123
138
|
live: live.map((d) => ({
|
|
124
139
|
name: d.admit.name,
|
|
125
140
|
rung: d.admit.rung,
|
|
@@ -133,7 +148,7 @@ export function summarizeRun(deps: Deps, run: Run): RunSummary {
|
|
|
133
148
|
notOk: records.filter((r) => r.status !== "ok").map((r) => `${r.name} (${r.status})`),
|
|
134
149
|
tokens: { input: sum((t) => t.input), cached: sum((t) => t.cached), output: sum((t) => t.output) },
|
|
135
150
|
costUsd: records.reduce((n, r) => n + (r.costUsd ?? 0), 0),
|
|
136
|
-
wallMinutes: Math.round((
|
|
151
|
+
wallMinutes: Math.round((until - Date.parse(run.meta.createdAt)) / 60_000),
|
|
137
152
|
},
|
|
138
153
|
agents: {
|
|
139
154
|
runs: agents.length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{$ as t,Sn as n,xn as r}from"./react-query.gen
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{$ as t,Sn as n,xn as r}from"./react-query.gen--d119q9w.js";import{u as i}from"./index-8eTsNUPE.js";var a=e(n(),1),o=`heroui-theme`,s=`(prefers-color-scheme: dark)`;function c(e){if(typeof window>`u`)return()=>{};let t=window.matchMedia(s);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function l(){return window.matchMedia?.(s).matches?`dark`:`light`}function u(){}function d(e,t){t!==e&&(t&&document.documentElement.classList.remove(t),document.documentElement.classList.add(e),document.documentElement.setAttribute(`data-theme`,e))}function f(e=`system`){let[t,n]=(0,a.useState)(()=>typeof window>`u`?e:localStorage.getItem(o)??e),r=(0,a.useSyncExternalStore)(c,l,u),s=t===`system`?r:t,f=(0,a.useRef)(void 0);return i(()=>{s&&(d(s,f.current),f.current=s)},[s]),{resolvedTheme:s,setTheme:(0,a.useCallback)(e=>{typeof window<`u`&&(localStorage.setItem(o,e),n(e))},[]),theme:t}}var p=r();function m({className:e}){return(0,p.jsxs)(`svg`,{viewBox:`0 0 20 20`,"aria-hidden":`true`,className:t(`size-5 shrink-0`,e),children:[(0,p.jsx)(`rect`,{x:`2`,y:`12`,width:`16`,height:`4`,className:`fill-foreground`}),(0,p.jsx)(`rect`,{x:`3`,y:`6`,width:`3`,height:`3`,className:`fill-accent`}),(0,p.jsx)(`rect`,{x:`8.5`,y:`6`,width:`3`,height:`3`,className:`fill-ink-faint`}),(0,p.jsx)(`rect`,{x:`14`,y:`6`,width:`3`,height:`3`,className:`fill-ink-faint`})]})}function h({className:e}){return(0,p.jsxs)(`span`,{className:t(`inline-flex items-center gap-2`,e),children:[(0,p.jsx)(m,{}),(0,p.jsx)(`span`,{className:`text-[15px] font-semibold tracking-[-0.02em]`,children:`catherd`})]})}export{f as n,h as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{Dt as t,G as n,K as r,Lt as i,Ot as a,Sn as o,Vt as s,W as c,X as l,_t as u,ct as d,dt as f,ft as p,ut as m}from"./react-query.gen
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{Dt as t,G as n,K as r,Lt as i,Ot as a,Sn as o,Vt as s,W as c,X as l,_t as u,ct as d,dt as f,ft as p,ut as m}from"./react-query.gen--d119q9w.js";import{$ as h,Q as g,X as _,Z as v,bt as y,ft as b,m as x,nt as S,ot as C,p as w,pt as T,st as E,tt as D,vt as O}from"./use-css-variable-CVkVc5hW.js";import{D as k}from"./label-BLvEBSes.js";var A=e(o(),1),j=typeof document<`u`&&window.visualViewport;function M(){let e=t(),n=(0,A.useRef)(null),[r,a]=(0,A.useState)(()=>e?{width:0,height:0}:N());return(0,A.useEffect)(()=>{let e=e=>{a(t=>e.width===t.width&&e.height===t.height?t:e)},t=()=>{j&&j.scale>1||e(N())},r=t=>{j&&j.scale>1||k(u(t))&&(n.current=O(t=>{t||e({width:document.documentElement.clientWidth,height:document.documentElement.clientHeight})}))};return e(N()),s()&&i()&&window.addEventListener(`blur`,r,!0),j?j.addEventListener(`resize`,t):window.addEventListener(`resize`,t),()=>{n.current?.(),s()&&i()&&window.removeEventListener(`blur`,r,!0),j?j.removeEventListener(`resize`,t):window.removeEventListener(`resize`,t)}},[]),r}function N(){return{width:j?Math.min(j.width*j.scale,document.documentElement.clientWidth):document.documentElement.clientWidth,height:j?j.height*j.scale:document.documentElement.clientHeight}}function P(e,t,n){let{overlayProps:r,underlayProps:i}=S({...e,isOpen:t.isOpen,onClose:t.close},n);D({isDisabled:!t.isOpen,UNSTABLE_overrideFocus:e.UNSTABLE_overrideFocus}),v();let{isEntering:a}=e;return(0,A.useEffect)(()=>{if(t.isOpen&&n.current)return a?C(n.current):E([n.current],{shouldUseInert:!0})},[t.isOpen,a,n]),{modalProps:f(r),underlayProps:i}}var F=(0,A.createContext)(null),I=(0,A.createContext)(null),L=(0,A.forwardRef)(function(e,t){if((0,A.useContext)(I))return A.createElement(H,{...e,modalRef:t},e.children);let{isDismissable:n,isKeyboardDismissDisabled:r,isOpen:i,defaultOpen:a,onOpenChange:o,children:s,isEntering:c,isExiting:l,UNSTABLE_portalContainer:u,shouldCloseOnInteractOutside:d,...f}=e;return A.createElement(z,{isDismissable:n,isKeyboardDismissDisabled:r,isOpen:i,defaultOpen:a,onOpenChange:o,isEntering:c,isExiting:l,UNSTABLE_portalContainer:u,shouldCloseOnInteractOutside:d},A.createElement(H,{...f,modalRef:t},s))});function R(e,r){[e,r]=n(e,r,F);let i=(0,A.useContext)(x),a=_(e),o=e.isOpen!=null||e.defaultOpen!=null||!i?a:i,s=d(r),c=(0,A.useRef)(null),l=b(s,o.isOpen,e.onExit),u=(0,A.useRef)(null),f=b(c,o.isOpen,e=>u.current?.(e)),p=l||f||e.isExiting||!1,m=t();return!o.isOpen&&!p||m?null:A.createElement(B,{...e,state:o,isExiting:p,overlayRef:s,modalRef:c,onExitRef:u})}var z=(0,A.forwardRef)(R);function B({UNSTABLE_portalContainer:e,UNSTABLE_deferUntilEntered:t,...n}){let i=n.modalRef,{state:o}=n,[s,u]=(0,A.useState)(!1),d=T(n.overlayRef,s,n.onEnter)||n.isEntering||!1,p=!!t&&(!s||d),{modalProps:h,underlayProps:_}=P({...n,isEntering:p},o,i),v=(0,A.useContext)(w),b=t?V(v,{isEntering:p}):v,S=r({...n,defaultClassName:`react-aria-ModalOverlay`,values:{isEntering:d,isExiting:n.isExiting,state:o}}),C=M(),E,D;if(typeof document<`u`){let e=y(document.body)?document.body:document.scrollingElement||document.documentElement,t=e.getBoundingClientRect().width%1,n=e.getBoundingClientRect().height%1;E=e.scrollWidth-t,D=e.scrollHeight-n}let k={...S.style,"--visual-viewport-width":C.width+`px`,"--visual-viewport-height":C.height+`px`,"--page-width":E===void 0?void 0:E+`px`,"--page-height":D===void 0?void 0:D+`px`};return a(()=>O(()=>u(!0)),[]),A.createElement(g,{isExiting:n.isExiting,portalContainer:e},A.createElement(l.div,{...f(m(n,{global:!0}),_),...S,style:k,ref:n.overlayRef,"data-entering":d||void 0,"data-exiting":n.isExiting||void 0},A.createElement(c,{values:[[I,{modalProps:h,modalRef:i,isExiting:n.isExiting,onExitRef:n.onExitRef,isOpen:s,isDismissable:n.isDismissable}],[x,o],[w,b]]},S.children)))}function V(e,t){if(e&&`slots`in e&&e.slots){let n={};for(let r in e.slots)n[r]={...e.slots[r],...t};return{...e,slots:n}}return{...e,...t}}function H(e){let{modalProps:t,modalRef:n,isExiting:i,onExitRef:o,isDismissable:s,isOpen:c}=(0,A.useContext)(I),u=(0,A.useContext)(x),g=(0,A.useMemo)(()=>p(e.modalRef,n),[e.modalRef,n]),_=d(g),v=T(_,c,e.onEnter),y=r({...e,defaultClassName:`react-aria-Modal`,values:{isEntering:v,isExiting:i,state:u}});return a(()=>{o&&(o.current=e.onExit)}),A.createElement(l.div,{...f(m(e,{global:!0}),t),...y,ref:_,"data-entering":v||void 0,"data-exiting":i||void 0},s&&A.createElement(h,{onDismiss:u.close}),y.children)}export{z as n,L as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{C as t,O as n,Sn as r,ct as i,dt as a,ft as o}from"./react-query.gen
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{C as t,O as n,Sn as r,ct as i,dt as a,ft as o}from"./react-query.gen--d119q9w.js";var s=e(r(),1),c=s.forwardRef(({children:e,...r},c)=>{c=i(c);let{pressProps:l}=t({...r,ref:c}),{focusableProps:u}=n(r,c),d=s.Children.only(e);(0,s.useEffect)(()=>{},[c,r.isDisabled]);let f=d.props.ref;return s.cloneElement(d,{...a(l,u,d.props),ref:o(f,c)})});export{c as t};
|