catherd-cli 1.4.0 → 2.0.0-beta.20261022113309
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/README.md +188 -169
- package/THIRD_PARTY_NOTICES.md +217 -35
- package/catalog/jev.json +27 -1
- package/catalog/models.json +56 -239
- package/package.json +6 -8
- 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/commands/catherd.md +2 -2
- package/plugin/skills/catherd/SKILL.md +97 -356
- package/plugin/skills/catherd-setup/SKILL.md +21 -20
- package/src/adapters/all.ts +0 -4
- package/src/adapters/backend.ts +19 -4
- package/src/adapters/claude-code/index.ts +126 -14
- package/src/adapters/codex/events.ts +10 -0
- package/src/adapters/codex/index.ts +17 -5
- package/src/adapters/cursor/home.ts +1 -1
- package/src/adapters/cursor/index.ts +10 -4
- package/src/adapters/opencode/index.ts +38 -1
- package/src/cli.ts +27 -27
- package/src/domain/agents.ts +3 -1
- package/src/domain/bars.ts +33 -107
- package/src/domain/blocked.ts +72 -0
- package/src/domain/branch.ts +51 -0
- package/src/domain/brief.ts +106 -0
- package/src/domain/catalog.ts +69 -313
- package/src/domain/changes.ts +23 -1
- package/src/domain/cost.ts +19 -29
- package/src/domain/errors.ts +6 -2
- package/src/domain/fail-lines.ts +26 -0
- package/src/domain/failover.ts +37 -75
- package/src/domain/findings.ts +47 -0
- package/src/domain/gate-brief.ts +53 -0
- package/src/domain/hints.ts +13 -2
- package/src/domain/ids.ts +13 -2
- package/src/domain/jev.ts +47 -2
- package/src/domain/judge.ts +124 -0
- package/src/domain/lane.ts +118 -3
- package/src/domain/milestone-memory.ts +53 -0
- package/src/domain/notice.ts +32 -8
- package/src/domain/notify.ts +32 -0
- package/src/domain/plan-doc.ts +198 -0
- package/src/domain/plan-lint.ts +141 -0
- package/src/domain/profile-rules.ts +175 -138
- package/src/domain/profile.ts +140 -63
- package/src/domain/record.ts +68 -3
- package/src/domain/reply.ts +29 -0
- package/src/domain/role-prompts.ts +182 -56
- package/src/domain/role-scope.ts +76 -0
- package/src/domain/role-tools.ts +34 -0
- package/src/domain/roles.ts +2 -0
- package/src/domain/route.ts +90 -0
- package/src/domain/rules.ts +33 -0
- package/src/domain/run-events.ts +298 -0
- package/src/domain/run-machine.ts +668 -0
- package/src/domain/run-state.ts +1310 -0
- package/src/domain/scorecard.ts +197 -0
- package/src/domain/select.ts +229 -72
- package/src/domain/slopalytics.ts +72 -0
- package/src/domain/state.ts +5 -0
- package/src/domain/util.ts +22 -0
- package/src/domain/workspace.ts +130 -0
- package/src/entry/answer-command.ts +39 -0
- package/src/entry/catalog-command.ts +24 -165
- package/src/entry/check-bin.ts +17 -0
- package/src/entry/cli-kit.ts +18 -2
- package/src/entry/daemon-bin.ts +22 -0
- package/src/entry/deps.ts +2 -0
- package/src/entry/doctor-command.ts +20 -2
- package/src/entry/glyphs.ts +15 -2
- package/src/entry/host-arg.ts +28 -0
- package/src/entry/init-command.ts +20 -69
- package/src/entry/knowledge-command.ts +121 -5
- package/src/entry/lock-command.ts +103 -8
- package/src/entry/mcp/handshake.ts +6 -2
- package/src/entry/mcp/role-bin.ts +20 -0
- package/src/entry/mcp/role-server.ts +134 -0
- package/src/entry/mcp/server.ts +85 -21
- package/src/entry/mcp/session-tools.ts +149 -0
- package/src/entry/panel/openapi.ts +189 -0
- package/src/entry/panel/server.ts +410 -0
- package/src/entry/panel-command.ts +68 -0
- package/src/entry/pause-command.ts +67 -0
- package/src/entry/profile-command.ts +33 -18
- package/src/entry/role-cli-command.ts +159 -0
- package/src/entry/runs-command.ts +81 -27
- package/src/entry/scorecard-command.ts +187 -0
- package/src/entry/supervise-bin.ts +1 -1
- package/src/entry/supervise-command.ts +30 -3
- package/src/entry/workspace-command.ts +44 -0
- package/src/infra/boot-lock.ts +25 -0
- package/src/infra/delivery.ts +3 -0
- package/src/infra/dispatch-dir.ts +2 -0
- package/src/infra/env.ts +11 -3
- package/src/infra/git.ts +70 -0
- package/src/infra/heavy-lock.ts +133 -6
- package/src/infra/host-probe.ts +16 -0
- package/src/infra/launch.ts +63 -7
- package/src/infra/lock-activity.ts +88 -0
- package/src/infra/login-env.ts +48 -0
- package/src/infra/memory.ts +45 -0
- package/src/infra/ntfy.ts +40 -0
- package/src/infra/open-url.ts +42 -0
- package/src/infra/paths.ts +37 -2
- package/src/infra/role-mcp.ts +69 -0
- package/src/infra/slopalytics.ts +30 -0
- package/src/infra/store.ts +6 -1
- package/src/infra/supervisor.ts +107 -16
- package/src/services/admission.ts +133 -31
- package/src/services/backends.ts +4 -6
- package/src/services/budget.ts +26 -6
- package/src/services/capture.ts +1 -22
- package/src/services/catalog-service.ts +155 -254
- package/src/services/credentials.ts +15 -26
- package/src/services/daemon.ts +181 -0
- package/src/services/dispatch-service.ts +209 -17
- package/src/services/dispatches.ts +30 -2
- package/src/services/doctor-access.ts +8 -3
- package/src/services/doctor-backends.ts +1 -1
- package/src/services/doctor-checks.ts +47 -0
- package/src/services/doctor-docker.ts +221 -0
- package/src/services/doctor-role-mcp.ts +65 -0
- package/src/services/doctor.ts +72 -15
- package/src/services/end-push.ts +157 -0
- package/src/services/failover-rungs.ts +109 -0
- package/src/services/finalize.ts +24 -2
- package/src/services/gate-env.ts +217 -0
- package/src/services/gate-service.ts +231 -45
- package/src/services/global-install.ts +46 -13
- package/src/services/jev-service.ts +2 -4
- package/src/services/lane-edit.ts +154 -0
- package/src/services/lane-service.ts +291 -55
- package/src/services/milestone-check.ts +433 -0
- package/src/services/milestone-tree.ts +170 -0
- package/src/services/milestones.ts +167 -29
- package/src/services/notifier.ts +124 -4
- package/src/services/notify-service.ts +26 -0
- package/src/services/orchestrator-wait.ts +82 -0
- package/src/services/panel-setup.ts +116 -0
- package/src/services/pause.ts +161 -0
- package/src/services/peek.ts +79 -17
- package/src/services/plan-input.ts +151 -0
- package/src/services/ports.ts +60 -5
- package/src/services/preflight.ts +232 -24
- package/src/services/profile-service.ts +31 -3
- package/src/services/profile-store.ts +18 -6
- package/src/services/protocol.ts +123 -25
- package/src/services/provenance.ts +34 -89
- package/src/services/questions.ts +24 -0
- package/src/services/reconcile.ts +33 -1
- package/src/services/reentry.ts +7 -6
- package/src/services/role-access.ts +27 -0
- package/src/services/routing-service.ts +161 -42
- package/src/services/run-briefs.ts +477 -0
- package/src/services/run-client.ts +217 -0
- package/src/services/run-effects.ts +837 -0
- package/src/services/run-events-store.ts +174 -0
- package/src/services/run-evidence.ts +1 -1
- package/src/services/run-pin.ts +125 -0
- package/src/services/run-read.ts +221 -0
- package/src/services/run-report.ts +176 -0
- package/src/services/run-service.ts +204 -23
- package/src/services/run-store.ts +159 -18
- package/src/services/scorecard-metrics.ts +86 -0
- package/src/services/scorecard.ts +382 -0
- package/src/services/scratch.ts +60 -0
- package/src/services/sessions.ts +3 -1
- package/src/services/state.ts +21 -0
- package/src/services/summary.ts +76 -12
- package/src/services/tree-path.ts +27 -0
- package/src/services/verifier-brief.ts +23 -0
- package/src/services/verifier-step.ts +48 -0
- package/src/services/workspace-admission.ts +259 -0
- package/src/services/workspace-service.ts +259 -0
- package/src/services/workspace-store.ts +95 -0
- package/web/dist/assets/Brand-PKlUX5TE.js +1 -0
- package/web/dist/assets/Brand-PKlUX5TE.js.br +0 -0
- package/web/dist/assets/Brand-PKlUX5TE.js.gz +0 -0
- package/web/dist/assets/Modal-Dxc5so53.js +1 -0
- package/web/dist/assets/Modal-Dxc5so53.js.br +0 -0
- package/web/dist/assets/Modal-Dxc5so53.js.gz +0 -0
- package/web/dist/assets/Pressable-C8-T6Ed_.js +1 -0
- package/web/dist/assets/StatusChip-B5xfI_Mn.js +153 -0
- package/web/dist/assets/StatusChip-B5xfI_Mn.js.br +0 -0
- package/web/dist/assets/StatusChip-B5xfI_Mn.js.gz +0 -0
- package/web/dist/assets/_app-Ea5cpyKe.js +1 -0
- package/web/dist/assets/_app-Ea5cpyKe.js.br +0 -0
- package/web/dist/assets/_app-Ea5cpyKe.js.gz +0 -0
- package/web/dist/assets/_runId-pTG0fXVo.js +1 -0
- package/web/dist/assets/_runId-pTG0fXVo.js.br +0 -0
- package/web/dist/assets/_runId-pTG0fXVo.js.gz +0 -0
- package/web/dist/assets/drawer-Du3cdlok.js +1 -0
- package/web/dist/assets/drawer-Du3cdlok.js.br +0 -0
- package/web/dist/assets/drawer-Du3cdlok.js.gz +0 -0
- package/web/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/web/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/web/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/web/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/web/dist/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
- package/web/dist/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
- package/web/dist/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
- package/web/dist/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/web/dist/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
- package/web/dist/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
- package/web/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/web/dist/assets/index-B6GiwDkh.js +11 -0
- package/web/dist/assets/index-B6GiwDkh.js.br +0 -0
- package/web/dist/assets/index-B6GiwDkh.js.gz +0 -0
- package/web/dist/assets/index-C5IbylvM.css +2 -0
- package/web/dist/assets/index-C5IbylvM.css.br +0 -0
- package/web/dist/assets/index-C5IbylvM.css.gz +0 -0
- package/web/dist/assets/label-DFSYBc62.js +1 -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-D8EcKZUt.js +1 -0
- package/web/dist/assets/link-D8EcKZUt.js.br +0 -0
- package/web/dist/assets/link-D8EcKZUt.js.gz +0 -0
- package/web/dist/assets/login-DaN5HPPW.js +1 -0
- package/web/dist/assets/login-DaN5HPPW.js.br +0 -0
- package/web/dist/assets/login-DaN5HPPW.js.gz +0 -0
- package/web/dist/assets/query-Cu--ccT3.js +1 -0
- package/web/dist/assets/questions-shoO9OVj.js +1 -0
- package/web/dist/assets/questions-shoO9OVj.js.br +0 -0
- package/web/dist/assets/questions-shoO9OVj.js.gz +0 -0
- package/web/dist/assets/react-query.gen-Bu2yV-qJ.js +12 -0
- package/web/dist/assets/react-query.gen-Bu2yV-qJ.js.br +0 -0
- package/web/dist/assets/react-query.gen-Bu2yV-qJ.js.gz +0 -0
- package/web/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/web/dist/assets/run-status-C0DRuV7U.js +1 -0
- package/web/dist/assets/runs-C3rg2zZc.js +1 -0
- package/web/dist/assets/runs-C3rg2zZc.js.br +0 -0
- package/web/dist/assets/runs-C3rg2zZc.js.gz +0 -0
- package/web/dist/assets/setup-5I4Vl9fR.js +1 -0
- package/web/dist/assets/setup-5I4Vl9fR.js.br +0 -0
- package/web/dist/assets/setup-5I4Vl9fR.js.gz +0 -0
- package/web/dist/assets/table-BOxXhqS4.js +1 -0
- package/web/dist/assets/table-BOxXhqS4.js.br +0 -0
- package/web/dist/assets/table-BOxXhqS4.js.gz +0 -0
- package/web/dist/assets/textfield-BzRFkxBF.js +1 -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/time--9kSQbbp.js +1 -0
- package/web/dist/assets/use-css-variable-CpnN9WtA.js +5 -0
- package/web/dist/assets/use-css-variable-CpnN9WtA.js.br +0 -0
- package/web/dist/assets/use-css-variable-CpnN9WtA.js.gz +0 -0
- package/web/dist/assets/useMutation-CVPKlR34.js +1 -0
- package/web/dist/assets/useMutation-CVPKlR34.js.br +0 -0
- package/web/dist/assets/useMutation-CVPKlR34.js.gz +0 -0
- package/web/dist/index.html +15 -0
- package/catalog/ATTRIBUTION.md +0 -36
- package/catalog/scores.json +0 -3202
- package/catalog/sources.json +0 -97
- package/src/adapters/antigravity/events.ts +0 -131
- package/src/adapters/antigravity/home.ts +0 -46
- package/src/adapters/antigravity/index.ts +0 -320
- package/src/adapters/antigravity/models.ts +0 -37
- package/src/adapters/grok/events.ts +0 -112
- package/src/adapters/grok/home.ts +0 -132
- package/src/adapters/grok/index.ts +0 -339
- package/src/adapters/grok/models.ts +0 -48
- package/src/domain/calibration.ts +0 -125
- package/src/domain/sources.ts +0 -144
- package/src/entry/mcp/dispatch-tools.ts +0 -52
- package/src/entry/mcp/lane-tools.ts +0 -84
- package/src/entry/mcp/protocol-tools.ts +0 -57
- package/src/entry/mcp/run-tools.ts +0 -148
- package/src/entry/mcp/setup-tools.ts +0 -108
- package/src/entry/tui/commands.ts +0 -563
- package/src/entry/tui/effects.ts +0 -381
- package/src/entry/tui/fixtures.ts +0 -637
- package/src/entry/tui/profile-edits.ts +0 -146
- package/src/entry/tui/profile-tree.ts +0 -429
- package/src/entry/tui/providers/app.tsx +0 -162
- package/src/entry/tui/providers/boundary.tsx +0 -57
- package/src/entry/tui/providers/data.tsx +0 -160
- package/src/entry/tui/providers/keymap.tsx +0 -166
- package/src/entry/tui/providers/root.tsx +0 -45
- package/src/entry/tui/providers/theme.tsx +0 -17
- package/src/entry/tui/providers/toast.tsx +0 -77
- package/src/entry/tui/run.tsx +0 -114
- package/src/entry/tui/state.ts +0 -373
- package/src/entry/tui/stories.ts +0 -114
- package/src/entry/tui/text.ts +0 -130
- package/src/entry/tui/theme.ts +0 -140
- package/src/entry/tui/views/app.tsx +0 -208
- package/src/entry/tui/views/dialogs.tsx +0 -41
- package/src/entry/tui/views/profile-actions.ts +0 -331
- package/src/entry/tui/views/profiles.tsx +0 -520
- package/src/entry/tui/views/runs.tsx +0 -573
- package/src/entry/tui/views/save-dialog.tsx +0 -340
- package/src/entry/tui/views/status.tsx +0 -209
- package/src/entry/tui/widgets/chrome.tsx +0 -114
- package/src/entry/tui/widgets/dialog-confirm.tsx +0 -58
- package/src/entry/tui/widgets/dialog-prompt.tsx +0 -52
- package/src/entry/tui/widgets/dialog-select.tsx +0 -212
- package/src/entry/tui/widgets/dialog.tsx +0 -68
- package/src/entry/tui/widgets/line.tsx +0 -92
- package/src/entry/tui/widgets/list.tsx +0 -197
- package/src/entry/tui/widgets/spinner.tsx +0 -49
- package/src/entry/tui/widgets/toast.tsx +0 -62
- package/src/infra/sources/arena.ts +0 -87
- package/src/infra/sources/artificial-analysis.ts +0 -112
- package/src/infra/sources/cache.ts +0 -124
- package/src/infra/sources/csv.ts +0 -38
- package/src/infra/sources/epoch.ts +0 -82
- package/src/infra/sources/http.ts +0 -75
- package/src/infra/sources/litellm.ts +0 -58
- package/src/infra/sources/models-dev.ts +0 -59
- package/src/infra/sources/openrouter-endpoints.ts +0 -52
- package/src/infra/sources/openrouter-models.ts +0 -60
- package/src/infra/sources/rows.ts +0 -38
- package/src/infra/sources/vectara.ts +0 -69
- package/src/infra/sources/zip.ts +0 -48
- package/src/services/catalog-refresh.ts +0 -201
- package/src/services/doctor-sources.ts +0 -76
- package/src/services/runs-page.ts +0 -255
- package/src/services/source-derive.ts +0 -374
- package/src/services/source-sync.ts +0 -305
- package/src/services/standins.ts +0 -204
- package/src/services/treat-likes.ts +0 -97
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { CatherdError } from "../domain/errors.ts";
|
|
5
|
+
import { assertId } from "../domain/ids.ts";
|
|
6
|
+
import { type Workspace, WorkspaceSchema } from "../domain/workspace.ts";
|
|
7
|
+
import { dataDir } from "../infra/paths.ts";
|
|
8
|
+
import { ensurePrivateDir, readVersioned, writeJsonAtomic } from "../infra/store.ts";
|
|
9
|
+
import { listRuns, type Run } from "./run-store.ts";
|
|
10
|
+
|
|
11
|
+
export function workspaceDirectory(id: string): string {
|
|
12
|
+
assertId("workspace", id);
|
|
13
|
+
return join(dataDir(), "workspaces", id);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function workspacePaths(dir: string) {
|
|
17
|
+
return {
|
|
18
|
+
meta: join(dir, "meta.json"),
|
|
19
|
+
admission: join(dir, "admission"),
|
|
20
|
+
contract: join(dir, "contract.md"),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* How long a workspace-lock waiter waits (#43 finding 5): longer than the slowest holder, an admission
|
|
26
|
+
* whose git status snapshot may take up to 15 s, so a dispatch in another repository never fails E_IO_LOCK.
|
|
27
|
+
*/
|
|
28
|
+
export const WORKSPACE_LOCK_WAIT_MS = 120_000;
|
|
29
|
+
|
|
30
|
+
export function createWorkspace(
|
|
31
|
+
input: Omit<Workspace, "schema" | "id" | "createdAt">,
|
|
32
|
+
now = new Date(),
|
|
33
|
+
): Workspace {
|
|
34
|
+
const workspace = WorkspaceSchema.parse({
|
|
35
|
+
...input,
|
|
36
|
+
schema: 1,
|
|
37
|
+
id: `workspace-${randomUUID()}`,
|
|
38
|
+
createdAt: now.toISOString(),
|
|
39
|
+
});
|
|
40
|
+
const dir = workspaceDirectory(workspace.id);
|
|
41
|
+
ensurePrivateDir(dir);
|
|
42
|
+
writeJsonAtomic(workspacePaths(dir).meta, workspace);
|
|
43
|
+
return workspace;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Rewrites the workspace's meta.json, validated; callers hold the workspace's admission lock. */
|
|
47
|
+
export function saveWorkspace(workspace: Workspace): Workspace {
|
|
48
|
+
const parsed = WorkspaceSchema.parse(workspace);
|
|
49
|
+
writeJsonAtomic(workspacePaths(workspaceDirectory(parsed.id)).meta, parsed);
|
|
50
|
+
return parsed;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function findWorkspace(id: string): Workspace {
|
|
54
|
+
const file = workspacePaths(workspaceDirectory(id)).meta;
|
|
55
|
+
if (!existsSync(file)) throw new CatherdError("E_RUN_NOT_FOUND", `no workspace "${id}"`);
|
|
56
|
+
const workspace = readVersioned(file, WorkspaceSchema, 1);
|
|
57
|
+
if (workspace.id !== id) throw new CatherdError("E_RUN_CORRUPT", `workspace ${id} has mismatched identity`);
|
|
58
|
+
return workspace;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface WorkspaceListing {
|
|
62
|
+
/** the runs linked to this workspace, each with a readable meta.json */
|
|
63
|
+
children: Run[];
|
|
64
|
+
/** run folders in a member repository whose meta.json cannot be read (#43 finding 1): skipped, named */
|
|
65
|
+
unreadable: { id: string; dir: string; reason: string }[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Linkage is in the child's atomic meta write, so a folder without a readable meta.json is never a child:
|
|
70
|
+
* `createRun` writes meta last, and a run being created, or left by a crash, is skipped and named, never
|
|
71
|
+
* fatal (#43 finding 1). Two children of one step, or a child in the wrong repository, still throw.
|
|
72
|
+
*/
|
|
73
|
+
export function workspaceListing(workspace: Workspace): WorkspaceListing {
|
|
74
|
+
const listing = listRuns(Object.values(workspace.repos));
|
|
75
|
+
const children = listing.runs.filter((r) => r.meta.workspace?.id === workspace.id);
|
|
76
|
+
const seen = new Set<string>();
|
|
77
|
+
for (const run of children) {
|
|
78
|
+
const step = workspace.steps.find((s) => s.id === run.meta.workspace?.step);
|
|
79
|
+
if (!step || workspace.repos[step.repo] !== run.meta.repo || seen.has(step.id))
|
|
80
|
+
throw new CatherdError(
|
|
81
|
+
"E_RUN_CORRUPT",
|
|
82
|
+
`workspace ${workspace.id} has duplicate or mismatched child ${run.id}`,
|
|
83
|
+
{ fix: `fix or delete ${run.dir}` },
|
|
84
|
+
);
|
|
85
|
+
seen.add(step.id);
|
|
86
|
+
}
|
|
87
|
+
return { children, unreadable: listing.corrupt };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** The workspace's children (see workspaceListing); folders without a readable meta.json are skipped. */
|
|
91
|
+
export const workspaceChildren = (workspace: Workspace): Run[] => workspaceListing(workspace).children;
|
|
92
|
+
|
|
93
|
+
/** What `workspace_status` says about a skipped folder: its path and why. */
|
|
94
|
+
export const unreadableWarning = (u: { dir: string; reason: string }): string =>
|
|
95
|
+
`skipped run folder ${u.dir}: ${u.reason}`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{$ as t,Sn as n,xn as r}from"./react-query.gen-Bu2yV-qJ.js";import{u as i}from"./index-B6GiwDkh.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
|
|
@@ -0,0 +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-Bu2yV-qJ.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-CpnN9WtA.js";import{D as k}from"./label-DFSYBc62.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
|
|
@@ -0,0 +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-Bu2yV-qJ.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};
|