@open-mercato/cezar 0.9.1 → 0.9.2
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 +19 -11
- package/dist/agent-config/catalog.d.ts +1 -1
- package/dist/agent-config/files.d.ts +1 -1
- package/dist/agent-config/service.d.ts +1 -1
- package/dist/agent-config/validate.d.ts +1 -1
- package/dist/automations/coordinator.d.ts +26 -0
- package/dist/automations/coordinator.js +66 -0
- package/dist/automations/coordinator.js.map +1 -0
- package/dist/automations/github-poller.d.ts +74 -0
- package/dist/automations/github-poller.js +234 -0
- package/dist/automations/github-poller.js.map +1 -0
- package/dist/automations/scheduler.d.ts +42 -0
- package/dist/automations/scheduler.js +192 -0
- package/dist/automations/scheduler.js.map +1 -0
- package/dist/automations/store.d.ts +65 -0
- package/dist/automations/store.js +298 -0
- package/dist/automations/store.js.map +1 -0
- package/dist/automations/task-template.d.ts +18 -0
- package/dist/automations/task-template.js +95 -0
- package/dist/automations/task-template.js.map +1 -0
- package/dist/automations/types.d.ts +251 -0
- package/dist/automations/types.js +158 -0
- package/dist/automations/types.js.map +1 -0
- package/dist/config.d.ts +9 -111
- package/dist/contract/agent-config.d.ts +151 -0
- package/dist/contract/automations.d.ts +911 -0
- package/dist/contract/events.d.ts +45 -0
- package/dist/contract/github.d.ts +467 -0
- package/dist/contract/health.d.ts +96 -0
- package/dist/contract/index.d.ts +15 -0
- package/dist/contract/index.js +1421 -0
- package/dist/contract/projects.d.ts +182 -0
- package/dist/contract/repo.d.ts +234 -0
- package/dist/contract/runs.d.ts +1226 -0
- package/dist/contract/skills.d.ts +225 -0
- package/dist/contract/workflows.d.ts +212 -0
- package/dist/contract/workspace.d.ts +442 -0
- package/dist/core/agent-env.d.ts +1 -1
- package/dist/core/agent-runner.d.ts +12 -1
- package/dist/core/agent-runner.js +13 -0
- package/dist/core/agent-runner.js.map +1 -1
- package/dist/core/ask.d.ts +45 -124
- package/dist/core/ask.js +103 -13
- package/dist/core/ask.js.map +1 -1
- package/dist/core/claude-cli-runner.d.ts +2 -2
- package/dist/core/claude-cli-runner.js +52 -9
- package/dist/core/claude-cli-runner.js.map +1 -1
- package/dist/core/claude-ui-mapper.d.ts +1 -1
- package/dist/core/codex-app-server-runner.d.ts +1 -1
- package/dist/core/codex-app-server-runner.js +55 -3
- package/dist/core/codex-app-server-runner.js.map +1 -1
- package/dist/core/codex-app-server-transport.d.ts +6 -1
- package/dist/core/codex-app-server-transport.js +12 -3
- package/dist/core/codex-app-server-transport.js.map +1 -1
- package/dist/core/codex-model-catalog.d.ts +1 -1
- package/dist/core/codex-ui-mapper.d.ts +5 -1
- package/dist/core/codex-ui-mapper.js +74 -17
- package/dist/core/codex-ui-mapper.js.map +1 -1
- package/dist/core/model-identity.d.ts +1 -1
- package/dist/core/model-presets.d.ts +2 -2
- package/dist/core/model-presets.js +1 -1
- package/dist/core/opencode-server-runner.d.ts +2 -2
- package/dist/core/opencode-ui-mapper.d.ts +4 -1
- package/dist/core/opencode-ui-mapper.js +45 -7
- package/dist/core/opencode-ui-mapper.js.map +1 -1
- package/dist/core/provider-auth.d.ts +62 -0
- package/dist/core/provider-auth.js +290 -0
- package/dist/core/provider-auth.js.map +1 -0
- package/dist/core/provider-availability.d.ts +3 -0
- package/dist/core/provider-availability.js +13 -0
- package/dist/core/provider-availability.js.map +1 -0
- package/dist/core/runner-factory.d.ts +1 -1
- package/dist/core/runner-model-catalog.d.ts +1 -1
- package/dist/core/tool-display.d.ts +1 -1
- package/dist/core/ui-events.d.ts +1 -1
- package/dist/core/ui-events.js +1 -1
- package/dist/git-diff-base.d.ts +60 -0
- package/dist/git-diff-base.js +54 -0
- package/dist/git-diff-base.js.map +1 -0
- package/dist/git-worktree.d.ts +37 -6
- package/dist/git-worktree.js +39 -9
- package/dist/git-worktree.js.map +1 -1
- package/dist/handoff.d.ts +2 -2
- package/dist/handoff.js +1 -1
- package/dist/index.js +65 -8
- package/dist/index.js.map +1 -1
- package/dist/paths.d.ts +16 -1
- package/dist/paths.js +24 -1
- package/dist/paths.js.map +1 -1
- package/dist/planner.d.ts +2 -2
- package/dist/planner.js +1 -1
- package/dist/planner.js.map +1 -1
- package/dist/release/manifests.d.ts +81 -0
- package/dist/release/manifests.js +74 -0
- package/dist/release/manifests.js.map +1 -0
- package/dist/release/snapshot.d.ts +9 -23
- package/dist/release/snapshot.js +9 -22
- package/dist/release/snapshot.js.map +1 -1
- package/dist/release/stable.d.ts +15 -29
- package/dist/release/stable.js +14 -27
- package/dist/release/stable.js.map +1 -1
- package/dist/runs/auto-name.d.ts +1 -1
- package/dist/runs/retention.d.ts +1 -1
- package/dist/runs/store.d.ts +142 -336
- package/dist/runs/store.js +136 -9
- package/dist/runs/store.js.map +1 -1
- package/dist/runs/ui-event-sink.d.ts +1 -1
- package/dist/server/app-type.d.ts +21 -0
- package/dist/server/app-type.js +2 -0
- package/dist/server/app-type.js.map +1 -0
- package/dist/server/capabilities.d.ts +6 -5
- package/dist/server/capabilities.js +11 -0
- package/dist/server/capabilities.js.map +1 -1
- package/dist/server/forge/github.d.ts +58 -151
- package/dist/server/forge/github.js +530 -6
- package/dist/server/forge/github.js.map +1 -1
- package/dist/server/forge/index.d.ts +10 -3
- package/dist/server/forge/index.js +14 -1
- package/dist/server/forge/index.js.map +1 -1
- package/dist/server/forge/types.d.ts +86 -1
- package/dist/server/git-changes.d.ts +8 -8
- package/dist/server/git-changes.js +14 -17
- package/dist/server/git-changes.js.map +1 -1
- package/dist/server/git.d.ts +2 -0
- package/dist/server/git.js +9 -0
- package/dist/server/git.js.map +1 -1
- package/dist/server/github.d.ts +3 -3
- package/dist/server/github.js +1 -1
- package/dist/server/github.js.map +1 -1
- package/dist/server/pr.d.ts +2 -2
- package/dist/server/project-context.d.ts +20 -3
- package/dist/server/project-context.js +30 -1
- package/dist/server/project-context.js.map +1 -1
- package/dist/server/provider-action-gate.d.ts +8 -0
- package/dist/server/provider-action-gate.js +54 -0
- package/dist/server/provider-action-gate.js.map +1 -0
- package/dist/server/provider-auth-runtime.d.ts +21 -0
- package/dist/server/provider-auth-runtime.js +66 -0
- package/dist/server/provider-auth-runtime.js.map +1 -0
- package/dist/server/server.d.ts +11142 -47
- package/dist/server/server.js +1714 -806
- package/dist/server/server.js.map +1 -1
- package/dist/server/validators.d.ts +97 -0
- package/dist/server/validators.js +86 -0
- package/dist/server/validators.js.map +1 -0
- package/dist/server/ws.d.ts +2 -2
- package/dist/server/ws.js +2 -2
- package/dist/server/ws.js.map +1 -1
- package/dist/server-install/engine.d.ts +1 -1
- package/dist/server-install/platforms/macosx-ngrok.d.ts +1 -1
- package/dist/server-install/platforms/ubuntu-vps.d.ts +16 -1
- package/dist/server-install/platforms/ubuntu-vps.js +83 -1
- package/dist/server-install/platforms/ubuntu-vps.js.map +1 -1
- package/dist/server-install/state.d.ts +1 -1
- package/dist/server-install/steps.d.ts +2 -2
- package/dist/server-install/strategies.d.ts +1 -1
- package/dist/server-install/types.d.ts +38 -424
- package/dist/server-install/ui.d.ts +1 -1
- package/dist/skills-banner.d.ts +7 -6
- package/dist/skills-banner.js +7 -6
- package/dist/skills-banner.js.map +1 -1
- package/dist/skills-remote.d.ts +2 -2
- package/dist/skills-update.d.ts +88 -0
- package/dist/skills-update.js +392 -0
- package/dist/skills-update.js.map +1 -0
- package/dist/skills.d.ts +2 -0
- package/dist/skills.js +3 -2
- package/dist/skills.js.map +1 -1
- package/dist/todos.d.ts +2 -28
- package/dist/todos.js +1 -1
- package/dist/ui-state.d.ts +16 -2
- package/dist/ui-state.js +14 -1
- package/dist/ui-state.js.map +1 -1
- package/dist/workflows/load.d.ts +1 -1
- package/dist/workflows/run.d.ts +53 -12
- package/dist/workflows/run.js +436 -64
- package/dist/workflows/run.js.map +1 -1
- package/dist/workflows/types.d.ts +59 -224
- package/dist/workflows/types.js +14 -0
- package/dist/workflows/types.js.map +1 -1
- package/dist/workspace/config.d.ts +68 -206
- package/dist/workspace/config.js +145 -14
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/migrations.d.ts +1 -1
- package/dist/workspace/migrations.js +19 -4
- package/dist/workspace/migrations.js.map +1 -1
- package/dist/workspace/projects.d.ts +8 -2
- package/dist/workspace/projects.js +9 -3
- package/dist/workspace/projects.js.map +1 -1
- package/dist/workspace/semaphore.d.ts +6 -0
- package/dist/workspace/semaphore.js +14 -1
- package/dist/workspace/semaphore.js.map +1 -1
- package/dist/workspace/ui-state.d.ts +13 -3
- package/dist/workspace/ui-state.js +15 -5
- package/dist/workspace/ui-state.js.map +1 -1
- package/package.json +17 -39
- package/scripts/inline-contract.mjs +112 -0
- package/scripts/mock-claude.mjs +39 -1
- package/scripts/sync-readme.mjs +20 -0
- package/web/dist/assets/alert-dialog-ghffK6g9.js +1 -0
- package/web/dist/assets/arrow-down-Cz8qb71e.js +1 -0
- package/web/dist/assets/arrow-left-wcYKQXI_.js +1 -0
- package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
- package/web/dist/assets/centered-state-ZtnFHA-n.js +43 -0
- package/web/dist/assets/chevron-right-G4caF2QV.js +1 -0
- package/web/dist/assets/{chunk-BO2N2NFS-DtrdTCWa.js → chunk-BO2N2NFS-DE6qKn3r.js} +8 -8
- package/web/dist/assets/circle-check--KvBxXWp.js +1 -0
- package/web/dist/assets/circle-x-C3EFZ3xf.js +1 -0
- package/web/dist/assets/collapsible-B0JVzd0B.js +1 -0
- package/web/dist/assets/commit-list-wm6DPHNs.js +1 -0
- package/web/dist/assets/compare-variants-DbdP4Y5T.js +1 -0
- package/web/dist/assets/{core-DePtBHcl.js → core-BCsw8oQw.js} +1 -1
- package/web/dist/assets/diff-Bizc96qe.js +3 -0
- package/web/dist/assets/diff-stat-Dyfg3ltF.js +1 -0
- package/web/dist/assets/{diff-view-DCeSegKk.js → diff-view-CG8ek6tC.js} +4 -4
- package/web/dist/assets/dropdown-menu-C1Dlf35P.js +1 -0
- package/web/dist/assets/editable-title-5rC_QRBZ.js +1 -0
- package/web/dist/assets/{ellipsis-vertical-CNnSLn5a.js → ellipsis-vertical-DpGTRqC2.js} +1 -1
- package/web/dist/assets/{file-D4GBh1ao.js → file-DlUGpUlb.js} +1 -1
- package/web/dist/assets/folder-BAY6Vddy.js +1 -0
- package/web/dist/assets/{git-pull-request-DnR8Xh4_.js → git-pull-request-agOG0iGM.js} +1 -1
- package/web/dist/assets/git-toolbar-DGiNMmtY.js +1 -0
- package/web/dist/assets/github-Vp7lxYGQ.js +1 -0
- package/web/dist/assets/highlighted-body-OFNGDK62-BL-MfFgl.js +1 -0
- package/web/dist/assets/highlighter-CdHqIwFr.js +3 -0
- package/web/dist/assets/image-preview-BWGk5fPX.js +1 -0
- package/web/dist/assets/index-DSxyJpuK.css +2 -0
- package/web/dist/assets/index-DiawI6RX.js +6 -0
- package/web/dist/assets/lib-BQXq3kEf.js +1 -0
- package/web/dist/assets/lib-BxQXEXDF.js +1 -0
- package/web/dist/assets/markdown-BGBOGCA_.js +2 -0
- package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
- package/web/dist/assets/new-task-form-BpAw_Dks.js +1 -0
- package/web/dist/assets/pill-Dvs-P0xy.js +1 -0
- package/web/dist/assets/project-router-Cx8NPoqn.js +1 -0
- package/web/dist/assets/prompt-templates-CSBYBR1I.js +15 -0
- package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
- package/web/dist/assets/{refresh-cw-BT8E96Tm.js → refresh-cw-BoGdAykg.js} +1 -1
- package/web/dist/assets/repo-git-PmX-BNMo.js +1 -0
- package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/web/dist/assets/run-diff-EcOkf3ti.js +3 -0
- package/web/dist/assets/run-header-BGiv6_qX.js +1 -0
- package/web/dist/assets/{search-x-BDjaMrzG.js → search-x-X3EpVhgs.js} +1 -1
- package/web/dist/assets/skill-empty-hint-CZLALx6l.js +1 -0
- package/web/dist/assets/skills-BiWfHmCR.js +1 -0
- package/web/dist/assets/skills-CC91ouGH.js +1 -0
- package/web/dist/assets/sparkles-Dt4q7pbG.js +1 -0
- package/web/dist/assets/{square-terminal-Ckjjn0vb.js → square-terminal-hwBL8XsC.js} +1 -1
- package/web/dist/assets/tab-link-DIlR5T07.js +1 -0
- package/web/dist/assets/task-changes-XkHDxzQA.js +1 -0
- package/web/dist/assets/task-commits-BTTA5k5T.js +1 -0
- package/web/dist/assets/task-files-Da8_4C9g.js +2 -0
- package/web/dist/assets/task-thread-DoNXUsHr.js +9 -0
- package/web/dist/assets/textarea-CUdokhkv.js +1 -0
- package/web/dist/assets/thread-loading-B8q8ukXJ.js +1 -0
- package/web/dist/assets/{trash-2-DAyZ0VSi.js → trash-2-DhVIdWv8.js} +1 -1
- package/web/dist/assets/{triangle-alert-Uy8rokUh.js → triangle-alert-XYT0DGCI.js} +1 -1
- package/web/dist/assets/{upload-CDdyPPo_.js → upload-BKjN59-1.js} +1 -1
- package/web/dist/assets/use-desktop-Bf5LS_P4.js +1 -0
- package/web/dist/assets/use-submit-shortcut-CzVyoAMd.js +1 -0
- package/web/dist/assets/utils-DsLuRXwV.js +64 -0
- package/web/dist/assets/workflows-o2QU_pvU.js +11 -0
- package/web/dist/assets/zoomable-image-7WyUiaVD.js +1 -0
- package/web/dist/index.html +32 -13
- package/scripts/dev.mjs +0 -74
- package/scripts/release-snapshot.mjs +0 -130
- package/scripts/release.mjs +0 -119
- package/web/dist/assets/arrow-left-CnSdp92h.js +0 -1
- package/web/dist/assets/bundle-mjs-BegPhL5c.js +0 -1
- package/web/dist/assets/centered-state-DOsTcJZF.js +0 -43
- package/web/dist/assets/commit-list-BrxBEzRK.js +0 -1
- package/web/dist/assets/compare-variants-Bv2c9ORF.js +0 -1
- package/web/dist/assets/dist-B6XQOhgM.js +0 -1
- package/web/dist/assets/git-toolbar-pIC1ubPM.js +0 -1
- package/web/dist/assets/github-DTTSG0ht.js +0 -1
- package/web/dist/assets/highlighted-body-OFNGDK62-BuFJwunK.js +0 -1
- package/web/dist/assets/image-preview-DEhW0TFz.js +0 -1
- package/web/dist/assets/index-Cijmlz7q.js +0 -30
- package/web/dist/assets/index-DzroxqBG.css +0 -2
- package/web/dist/assets/lib-DPEZDBUN.js +0 -1
- package/web/dist/assets/lib-uHpeUPzK.js +0 -1
- package/web/dist/assets/mermaid-GHXKKRXX-CN2zQue0.js +0 -1
- package/web/dist/assets/open-mercato-toBr6SOa.svg +0 -11
- package/web/dist/assets/project-router-BMx4e8m-.js +0 -1
- package/web/dist/assets/repo-git-BusYfa3t.js +0 -1
- package/web/dist/assets/run-diff-wOJ3odA-.js +0 -3
- package/web/dist/assets/run-header-Cg5incil.js +0 -1
- package/web/dist/assets/skill-empty-hint-DTUSp6Vl.js +0 -1
- package/web/dist/assets/skills-PpP2owbM.js +0 -1
- package/web/dist/assets/tab-link-F3uQrdm2.js +0 -1
- package/web/dist/assets/task-changes-iD9kS79I.js +0 -1
- package/web/dist/assets/task-commits-COkLaUri.js +0 -1
- package/web/dist/assets/task-files-Ckttz7XH.js +0 -2
- package/web/dist/assets/task-thread-CQD91VPt.js +0 -9
- package/web/dist/assets/textarea-Bj_LCreg.js +0 -1
- package/web/dist/assets/use-desktop-DUh0STzq.js +0 -3
- package/web/dist/assets/utils-B8s5qIcK.js +0 -1
- package/web/dist/assets/workflows-BFk8C0co.js +0 -11
- package/web/dist/assets/zoomable-image-PEDOqyLQ.js +0 -1
- /package/web/{open-mercato.svg → dist/open-mercato.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/workspace/migrations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/workspace/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ForgeKind } from '../server/forge/index.ts';
|
|
2
|
+
import { type WorkspaceProject } from './config.ts';
|
|
2
3
|
/**
|
|
3
4
|
* Project registry operations over `~/.cezar/config.json` (spec
|
|
4
5
|
* 2026-07-20-multi-project-workspace, "Project identity" + "Boot flow"):
|
|
@@ -54,6 +55,11 @@ export interface ProjectListEntry extends WorkspaceProject {
|
|
|
54
55
|
status: ProjectStatus;
|
|
55
56
|
/** Current branch when cheaply available (omitted e.g. on an unborn HEAD). */
|
|
56
57
|
branch?: string;
|
|
58
|
+
/** Which forge the root's remote belongs to (#698) — classified from the
|
|
59
|
+
* remote URL alone, no `gh` probe. Omitted when there is no forge remote.
|
|
60
|
+
* The sidebar gates each project group's GitHub tab on this, instead of on
|
|
61
|
+
* the boot folder's health-level forge answer. */
|
|
62
|
+
forge?: ForgeKind;
|
|
57
63
|
}
|
|
58
64
|
/** Test hook: drop cached probes so status changes are visible immediately. */
|
|
59
65
|
export declare function clearProjectProbeCache(): void;
|
|
@@ -64,7 +70,7 @@ export declare function clearProjectProbeCache(): void;
|
|
|
64
70
|
* SAME shape the list route does — one project, one shape, whichever route
|
|
65
71
|
* produced it.
|
|
66
72
|
*/
|
|
67
|
-
export declare function probeProjectStatus(root: string): Promise<Pick<ProjectListEntry, 'status' | 'branch'>>;
|
|
73
|
+
export declare function probeProjectStatus(root: string): Promise<Pick<ProjectListEntry, 'status' | 'branch' | 'forge'>>;
|
|
68
74
|
/**
|
|
69
75
|
* Registry entries in stored order, each with its `status` (+`branch` when
|
|
70
76
|
* available). Probes run concurrently and are TTL-cached per root. A
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { realpath, stat } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { basename, join, resolve, sep } from 'node:path';
|
|
4
|
+
import { forgeKindOfRemote } from '../server/forge/index.js';
|
|
4
5
|
import { getRepoInfo } from '../server/git.js';
|
|
5
6
|
import { mergeWriteWorkspaceConfig, loadWorkspaceConfig, } from './config.js';
|
|
6
7
|
/**
|
|
@@ -163,10 +164,15 @@ async function computeProbe(root) {
|
|
|
163
164
|
catch {
|
|
164
165
|
return { status: 'not-git' };
|
|
165
166
|
}
|
|
166
|
-
// Branch
|
|
167
|
-
// unborn HEAD), and a repo without
|
|
167
|
+
// Branch and forge are best-effort garnish: getRepoInfo never throws (null
|
|
168
|
+
// on e.g. an unborn HEAD), and a repo without either is still status ok.
|
|
168
169
|
const info = await getRepoInfo(root);
|
|
169
|
-
|
|
170
|
+
const forge = forgeKindOfRemote(info?.remote);
|
|
171
|
+
return {
|
|
172
|
+
status: 'ok',
|
|
173
|
+
...(info?.branch ? { branch: info.branch } : {}),
|
|
174
|
+
...(forge ? { forge } : {}),
|
|
175
|
+
};
|
|
170
176
|
}
|
|
171
177
|
async function probeRoot(root) {
|
|
172
178
|
const cached = probeCache.get(root);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/workspace/projects.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/workspace/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
export interface WorkspaceResourceLimits {
|
|
32
32
|
/** Workspace-wide cap on concurrently *running* agent runs. */
|
|
33
33
|
maxParallel: number;
|
|
34
|
+
/** Durable monitoring sessions that do not consume active-task capacity. */
|
|
35
|
+
maxMonitoringSessions?: number;
|
|
36
|
+
/** Optional automatic monitoring re-check cadence; null means stay parked. */
|
|
37
|
+
monitoringWakeIntervalMinutes?: number | null;
|
|
34
38
|
/** Per-task process-tree memory ceiling in MiB; null = no limit. */
|
|
35
39
|
memoryLimitMb: number | null;
|
|
36
40
|
/**
|
|
@@ -84,6 +88,8 @@ export declare class WorkspaceSemaphore {
|
|
|
84
88
|
busy(): number;
|
|
85
89
|
/** Cached workspace-wide parallel cap. */
|
|
86
90
|
maxParallel(): number;
|
|
91
|
+
maxMonitoringSessions(): number;
|
|
92
|
+
monitoringWakeIntervalMinutes(): number | null;
|
|
87
93
|
/** Cached per-task memory ceiling (MiB), or null for no limit. */
|
|
88
94
|
memoryLimitMb(): number | null;
|
|
89
95
|
/**
|
|
@@ -13,7 +13,12 @@ function normalizeRootSync(root) {
|
|
|
13
13
|
return resolve(root);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
const DEFAULT_LIMITS = {
|
|
16
|
+
const DEFAULT_LIMITS = {
|
|
17
|
+
maxParallel: 2,
|
|
18
|
+
maxMonitoringSessions: 2,
|
|
19
|
+
monitoringWakeIntervalMinutes: null,
|
|
20
|
+
memoryLimitMb: null,
|
|
21
|
+
};
|
|
17
22
|
/** Production loader: the `resources` slice of `~/.cezar/config.json`
|
|
18
23
|
* (schema-defaulted, so a missing/corrupt file yields the zero-config 2/null),
|
|
19
24
|
* plus the per-project `maxParallel` overrides built into a root→limit map.
|
|
@@ -28,6 +33,8 @@ async function loadResourceLimits() {
|
|
|
28
33
|
}
|
|
29
34
|
return {
|
|
30
35
|
maxParallel: resources.maxParallel,
|
|
36
|
+
maxMonitoringSessions: resources.maxMonitoringSessions,
|
|
37
|
+
monitoringWakeIntervalMinutes: resources.monitoringWakeIntervalMinutes,
|
|
31
38
|
memoryLimitMb: resources.memoryLimitMb,
|
|
32
39
|
projectLimits,
|
|
33
40
|
};
|
|
@@ -63,6 +70,12 @@ export class WorkspaceSemaphore {
|
|
|
63
70
|
maxParallel() {
|
|
64
71
|
return this.limits.maxParallel;
|
|
65
72
|
}
|
|
73
|
+
maxMonitoringSessions() {
|
|
74
|
+
return this.limits.maxMonitoringSessions ?? 2;
|
|
75
|
+
}
|
|
76
|
+
monitoringWakeIntervalMinutes() {
|
|
77
|
+
return this.limits.monitoringWakeIntervalMinutes ?? null;
|
|
78
|
+
}
|
|
66
79
|
/** Cached per-task memory ceiling (MiB), or null for no limit. */
|
|
67
80
|
memoryLimitMb() {
|
|
68
81
|
return this.limits.memoryLimitMb;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../src/workspace/semaphore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../src/workspace/semaphore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WorkspaceUiState } from '../contract/index.js';
|
|
1
2
|
/**
|
|
2
3
|
* `~/.cezar/ui-state.json` — global GUI state, the workspace twin of the
|
|
3
4
|
* per-repo `.ai/cezar/ui-state.json` (spec 2026-07-20-multi-project-workspace,
|
|
@@ -9,8 +10,13 @@
|
|
|
9
10
|
* repo's own file.
|
|
10
11
|
*/
|
|
11
12
|
/** Read `~/.cezar/ui-state.json` on demand — never cached, never throws.
|
|
12
|
-
* Missing, unreadable, malformed, or non-object all degrade to `{}`.
|
|
13
|
-
|
|
13
|
+
* Missing, unreadable, malformed, or non-object all degrade to `{}`.
|
|
14
|
+
*
|
|
15
|
+
* Typed by the CONTRACT (`WorkspaceUiState`) for the same reason as its per-repo twin in
|
|
16
|
+
* `src/ui-state.ts`: `GET /api/v1/workspace/ui-state` answers this value verbatim, so a loose
|
|
17
|
+
* record left the route naming no key. The schema is a `z.looseObject`, so unknown prefs keep
|
|
18
|
+
* round-tripping (BACKWARD_COMPATIBILITY.md §3) — the type only adds the known names. */
|
|
19
|
+
export declare function readWorkspaceUiState(path?: string): Promise<WorkspaceUiState>;
|
|
14
20
|
/**
|
|
15
21
|
* Read-modify-write for `~/.cezar/ui-state.json`, written with the same atomic
|
|
16
22
|
* per-writer tmp+rename `0600` pattern (dir `0700`) as
|
|
@@ -19,5 +25,9 @@ export declare function readWorkspaceUiState(): Promise<Record<string, unknown>>
|
|
|
19
25
|
* corrupt file merges from `{}`. The mutator may mutate its argument in place
|
|
20
26
|
* or return a replacement. Throws on write failure (e.g. a read-only home) —
|
|
21
27
|
* degrading is the caller's policy, per house rules.
|
|
28
|
+
*
|
|
29
|
+
* Path resolved once, before the `await`, for the same reason as
|
|
30
|
+
* `mergeWriteWorkspaceConfig`: a `CEZ_HOME` that changes mid-flight must not be
|
|
31
|
+
* able to send the read and the write to two different files.
|
|
22
32
|
*/
|
|
23
|
-
export declare function mergeWriteWorkspaceUiState(mutator: (state:
|
|
33
|
+
export declare function mergeWriteWorkspaceUiState(mutator: (state: WorkspaceUiState) => WorkspaceUiState | void): Promise<WorkspaceUiState>;
|
|
@@ -12,10 +12,15 @@ import { atomicWriteJsonSync } from './config.js';
|
|
|
12
12
|
* repo's own file.
|
|
13
13
|
*/
|
|
14
14
|
/** Read `~/.cezar/ui-state.json` on demand — never cached, never throws.
|
|
15
|
-
* Missing, unreadable, malformed, or non-object all degrade to `{}`.
|
|
16
|
-
|
|
15
|
+
* Missing, unreadable, malformed, or non-object all degrade to `{}`.
|
|
16
|
+
*
|
|
17
|
+
* Typed by the CONTRACT (`WorkspaceUiState`) for the same reason as its per-repo twin in
|
|
18
|
+
* `src/ui-state.ts`: `GET /api/v1/workspace/ui-state` answers this value verbatim, so a loose
|
|
19
|
+
* record left the route naming no key. The schema is a `z.looseObject`, so unknown prefs keep
|
|
20
|
+
* round-tripping (BACKWARD_COMPATIBILITY.md §3) — the type only adds the known names. */
|
|
21
|
+
export async function readWorkspaceUiState(path = workspaceUiStatePath()) {
|
|
17
22
|
try {
|
|
18
|
-
const parsed = JSON.parse(await readFile(
|
|
23
|
+
const parsed = JSON.parse(await readFile(path, 'utf8'));
|
|
19
24
|
return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
20
25
|
? parsed
|
|
21
26
|
: {};
|
|
@@ -32,11 +37,16 @@ export async function readWorkspaceUiState() {
|
|
|
32
37
|
* corrupt file merges from `{}`. The mutator may mutate its argument in place
|
|
33
38
|
* or return a replacement. Throws on write failure (e.g. a read-only home) —
|
|
34
39
|
* degrading is the caller's policy, per house rules.
|
|
40
|
+
*
|
|
41
|
+
* Path resolved once, before the `await`, for the same reason as
|
|
42
|
+
* `mergeWriteWorkspaceConfig`: a `CEZ_HOME` that changes mid-flight must not be
|
|
43
|
+
* able to send the read and the write to two different files.
|
|
35
44
|
*/
|
|
36
45
|
export async function mergeWriteWorkspaceUiState(mutator) {
|
|
37
|
-
const
|
|
46
|
+
const path = workspaceUiStatePath();
|
|
47
|
+
const current = await readWorkspaceUiState(path);
|
|
38
48
|
const next = mutator(current) ?? current;
|
|
39
|
-
atomicWriteJsonSync(
|
|
49
|
+
atomicWriteJsonSync(path, next);
|
|
40
50
|
return next;
|
|
41
51
|
}
|
|
42
52
|
//# sourceMappingURL=ui-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-state.js","sourceRoot":"","sources":["../../src/workspace/ui-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-state.js","sourceRoot":"","sources":["../../src/workspace/ui-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;GASG;AAEH;;;;;;0FAM0F;AAC1F,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAI,GAAW,oBAAoB,EAAE;IAErC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5E,CAAC,CAAE,MAA2B;YAC9B,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA6D;IAE7D,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IACzC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/cezar",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Local cockpit for running and tracking AI agent tasks in your repo. Uses your logged-in `claude` CLI and `gh` — zero config, zero database.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,9 +9,13 @@
|
|
|
9
9
|
"cez": "dist/index.js",
|
|
10
10
|
"cezar-cli": "dist/index.js"
|
|
11
11
|
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": "./dist/index.js",
|
|
14
|
+
"./app-type": "./dist/server/app-type.js",
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
12
17
|
"files": [
|
|
13
18
|
"dist",
|
|
14
|
-
"web/open-mercato.svg",
|
|
15
19
|
"web/dist",
|
|
16
20
|
"scripts",
|
|
17
21
|
"README.md"
|
|
@@ -20,27 +24,22 @@
|
|
|
20
24
|
"node": ">=20"
|
|
21
25
|
},
|
|
22
26
|
"scripts": {
|
|
23
|
-
"
|
|
24
|
-
"build
|
|
27
|
+
"prebuild": "node scripts/sync-readme.mjs",
|
|
28
|
+
"build": "tsc",
|
|
25
29
|
"check:pack": "node scripts/check-pack.mjs",
|
|
26
|
-
"dev": "
|
|
30
|
+
"dev": "tsx src/index.ts",
|
|
27
31
|
"install-as-command": "node scripts/install-as-command.mjs --mode link",
|
|
28
32
|
"install-as-command:global": "node scripts/install-as-command.mjs --mode global",
|
|
29
33
|
"uninstall-as-command": "node scripts/install-as-command.mjs --mode uninstall",
|
|
30
|
-
"dev:server": "tsx src/index.ts",
|
|
31
34
|
"server-install": "tsx src/index.ts server-install",
|
|
32
35
|
"server-deploy": "tsx src/index.ts server-deploy",
|
|
33
36
|
"server-uninstall": "tsx src/index.ts server-uninstall",
|
|
34
|
-
"dev:web": "vite --config web/app/vite.config.ts",
|
|
35
37
|
"test": "vitest run",
|
|
36
38
|
"test:watch": "vitest",
|
|
37
39
|
"test:unit": "node --import tsx --test test/unit/*.test.ts",
|
|
38
40
|
"test:package": "node --import tsx --test test/e2e/*.test.ts",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"typecheck:server": "tsc --noEmit -p tsconfig.test.json",
|
|
42
|
-
"typecheck:web": "tsc --noEmit -p web/app/tsconfig.json",
|
|
43
|
-
"prepublishOnly": "npm run build"
|
|
41
|
+
"typecheck": "tsc --noEmit -p tsconfig.test.json",
|
|
42
|
+
"postbuild": "node scripts/inline-contract.mjs"
|
|
44
43
|
},
|
|
45
44
|
"dependencies": {
|
|
46
45
|
"@clack/prompts": "^0.11.0",
|
|
@@ -49,43 +48,22 @@
|
|
|
49
48
|
"smol-toml": "^1.7.0",
|
|
50
49
|
"ws": "^8.21.1",
|
|
51
50
|
"yaml": "^2.5.0",
|
|
52
|
-
"zod": "^
|
|
51
|
+
"zod": "^4.4.3"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@dnd-kit/utilities": "^3.2.2",
|
|
58
|
-
"@tailwindcss/vite": "^4.3.2",
|
|
59
|
-
"@tanstack/react-query": "^5.101.2",
|
|
60
|
-
"@testing-library/react": "^16.3.2",
|
|
54
|
+
"@open-mercato/cezar-api-client": "^0.9.2",
|
|
55
|
+
"@open-mercato/cezar-contract": "^0.9.2",
|
|
61
56
|
"@types/node": "^20.14.0",
|
|
62
|
-
"@types/react": "^19.2.17",
|
|
63
|
-
"@types/react-dom": "^19.2.3",
|
|
64
57
|
"@types/ws": "^8.18.1",
|
|
65
|
-
"
|
|
66
|
-
"class-variance-authority": "^0.7.1",
|
|
67
|
-
"clsx": "^2.1.1",
|
|
68
|
-
"cmdk": "^1.1.1",
|
|
69
|
-
"jsdom": "^29.1.1",
|
|
70
|
-
"lucide-react": "^1.24.0",
|
|
71
|
-
"radix-ui": "^1.6.2",
|
|
72
|
-
"react": "^19.2.7",
|
|
73
|
-
"react-dom": "^19.2.7",
|
|
74
|
-
"react-router": "^7.18.1",
|
|
75
|
-
"shiki": "^4.3.1",
|
|
76
|
-
"streamdown": "^2.5.0",
|
|
77
|
-
"tailwind-merge": "^3.6.0",
|
|
78
|
-
"tailwindcss": "^4.3.2",
|
|
58
|
+
"esbuild": "^0.28.1",
|
|
79
59
|
"tsx": "^4.19.0",
|
|
80
|
-
"tw-animate-css": "^1.4.0",
|
|
81
60
|
"typescript": "^7.0.2",
|
|
82
|
-
"virtua": "^0.49.3",
|
|
83
|
-
"vite": "^8.1.4",
|
|
84
61
|
"vitest": "^4.1.10"
|
|
85
62
|
},
|
|
86
63
|
"repository": {
|
|
87
64
|
"type": "git",
|
|
88
|
-
"url": "https://github.com/open-mercato/cezar"
|
|
65
|
+
"url": "https://github.com/open-mercato/cezar",
|
|
66
|
+
"directory": "packages/cezar"
|
|
89
67
|
},
|
|
90
68
|
"publishConfig": {
|
|
91
69
|
"access": "public"
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundle `@open-mercato/cezar-contract` into `dist` after `tsc`.
|
|
3
|
+
*
|
|
4
|
+
* The contract and the api-client are PRIVATE and ship no build of their own — they are linked as
|
|
5
|
+
* workspace packages and consumed as TypeScript source, which is what every other consumer wants:
|
|
6
|
+
* the cockpit's Vite bundles them, vitest transforms them.
|
|
7
|
+
*
|
|
8
|
+
* This package is the exception, because it is PUBLISHED. `workspace/migrations.ts` imports
|
|
9
|
+
* `workspaceUiStateSchema` — a zod value, not a type — so the installed CLI resolves the contract
|
|
10
|
+
* at runtime, and a tarball naming a package npm has never seen would fail on install. So the
|
|
11
|
+
* build folds it in: esbuild compiles the contract's source to one ESM file under `dist/contract/`,
|
|
12
|
+
* `tsc` emits its declarations beside it, and the emitted references are repointed at both.
|
|
13
|
+
*
|
|
14
|
+
* Nothing is copied at the SOURCE level — the package graph still states the dependency, and this
|
|
15
|
+
* runs only when `dist` actually names it. Delete this the day the contract is published, or the
|
|
16
|
+
* day nothing here imports a contract VALUE.
|
|
17
|
+
*
|
|
18
|
+
* DECLARATIONS ship next to the bundle, and that is not optional. The scan below matches `.d.ts`
|
|
19
|
+
* as well as `.js`, so emitted type imports get repointed too (`dist/ui-state.d.ts` names
|
|
20
|
+
* `WorkspaceUiState`). esbuild emits JavaScript only, so a bundle on its own leaves those
|
|
21
|
+
* declarations naming a module TypeScript cannot resolve — `TS7016`, and the type silently
|
|
22
|
+
* degrades to `any` for anyone consuming the published package. Every tsconfig here sets
|
|
23
|
+
* `skipLibCheck`, so nothing in this repo would have said a word. `tsc --emitDeclarationOnly`
|
|
24
|
+
* mirrors the contract's `src` tree into `dist/contract/`, which is what makes
|
|
25
|
+
* `./contract/index.js` resolve to a real `./contract/index.d.ts`.
|
|
26
|
+
*/
|
|
27
|
+
import { execFileSync } from 'node:child_process';
|
|
28
|
+
import { createRequire } from 'node:module';
|
|
29
|
+
import { existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
30
|
+
import { dirname, join, relative } from 'node:path';
|
|
31
|
+
import { fileURLToPath } from 'node:url';
|
|
32
|
+
import { build } from 'esbuild';
|
|
33
|
+
|
|
34
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
35
|
+
const dist = join(here, '..', 'dist');
|
|
36
|
+
const contractRoot = join(here, '..', '..', 'contract');
|
|
37
|
+
const entry = join(contractRoot, 'src', 'index.ts');
|
|
38
|
+
const outdir = join(dist, 'contract');
|
|
39
|
+
const SPEC = /(['"])@open-mercato\/cezar-contract\1/g;
|
|
40
|
+
|
|
41
|
+
/** Emitted files that name the package — the copy happens only if it is really used. */
|
|
42
|
+
const referrers = [];
|
|
43
|
+
const scan = (dir) => {
|
|
44
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
45
|
+
const p = join(dir, entry.name);
|
|
46
|
+
if (entry.isDirectory()) {
|
|
47
|
+
if (p !== outdir) scan(p);
|
|
48
|
+
} else if (/\.(js|d\.ts|js\.map)$/.test(entry.name)) {
|
|
49
|
+
SPEC.lastIndex = 0;
|
|
50
|
+
if (SPEC.test(readFileSync(p, 'utf8'))) referrers.push(p);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
scan(dist);
|
|
55
|
+
|
|
56
|
+
rmSync(outdir, { recursive: true, force: true });
|
|
57
|
+
if (referrers.length === 0) {
|
|
58
|
+
console.log('inline-contract ok — nothing in dist references the contract, nothing bundled');
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// `zod` stays external: it is a real dependency of this package, so npm resolves it normally and
|
|
63
|
+
// the tarball does not carry a second copy.
|
|
64
|
+
await build({
|
|
65
|
+
entryPoints: [entry],
|
|
66
|
+
outfile: join(outdir, 'index.js'),
|
|
67
|
+
bundle: true,
|
|
68
|
+
format: 'esm',
|
|
69
|
+
platform: 'neutral',
|
|
70
|
+
target: 'es2022',
|
|
71
|
+
external: ['zod'],
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// `tsc` is located through the module graph rather than a guessed `node_modules` path, because
|
|
75
|
+
// `typescript` is a devDependency of THIS package and may sit here or be hoisted to the workspace
|
|
76
|
+
// root. Via the manifest's own `bin` entry: TypeScript 7's `exports` map does not publish
|
|
77
|
+
// `./bin/tsc`, so resolving that subpath directly is ERR_PACKAGE_PATH_NOT_EXPORTED.
|
|
78
|
+
const require_ = createRequire(import.meta.url);
|
|
79
|
+
const tsManifest = require_.resolve('typescript/package.json');
|
|
80
|
+
const tscBin = join(dirname(tsManifest), require_(tsManifest).bin.tsc);
|
|
81
|
+
|
|
82
|
+
// The declarations for the bundle above. `tsc` mirrors `src/**` into `outdir`, so `index.d.ts`
|
|
83
|
+
// lands beside `index.js` and its relative siblings (`./health.js` → `./health.d.ts`) resolve as
|
|
84
|
+
// TypeScript expects. Those siblings have no runtime twin, which is correct: the bundle is
|
|
85
|
+
// self-contained and nothing imports those paths at runtime.
|
|
86
|
+
execFileSync(
|
|
87
|
+
process.execPath,
|
|
88
|
+
[
|
|
89
|
+
tscBin,
|
|
90
|
+
'--project',
|
|
91
|
+
join(contractRoot, 'tsconfig.json'),
|
|
92
|
+
'--emitDeclarationOnly',
|
|
93
|
+
'--declarationMap',
|
|
94
|
+
'false',
|
|
95
|
+
'--sourceMap',
|
|
96
|
+
'false',
|
|
97
|
+
'--outDir',
|
|
98
|
+
outdir,
|
|
99
|
+
],
|
|
100
|
+
{ stdio: 'inherit' },
|
|
101
|
+
);
|
|
102
|
+
if (!existsSync(join(outdir, 'index.d.ts'))) {
|
|
103
|
+
console.error('inline-contract: tsc emitted no index.d.ts — the bundled contract would ship untyped');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const p of referrers) {
|
|
108
|
+
let rel = relative(dirname(p), join(outdir, 'index.js')).replaceAll('\\', '/');
|
|
109
|
+
if (!rel.startsWith('.')) rel = `./${rel}`;
|
|
110
|
+
writeFileSync(p, readFileSync(p, 'utf8').replace(SPEC, `'${rel}'`), 'utf8');
|
|
111
|
+
}
|
|
112
|
+
console.log(`inline-contract ok — contract bundled with declarations, ${referrers.length} file(s) repointed`);
|
package/scripts/mock-claude.mjs
CHANGED
|
@@ -87,9 +87,32 @@ async function respond(userText, imageCount) {
|
|
|
87
87
|
// AskUser card path (park `waiting` + emit `ask.requested`) is testable dry.
|
|
88
88
|
// `mock:ask-bad` → a MALFORMED marker (invalid JSON), to prove graceful
|
|
89
89
|
// degradation: the run still parks `waiting`, no ask card, prose preserved.
|
|
90
|
+
// `mock:ask-invalid` → syntactically valid JSON that FAILS the ask schema
|
|
91
|
+
// (empty questions) — the shape behind the blank-question bug: no card will
|
|
92
|
+
// ever render it, so the marker must survive in the v1 text.
|
|
93
|
+
// `mock:ask-near` → bounded presentation drift: harmless extra keys plus
|
|
94
|
+
// an overlong header/description. It should normalize into exactly one card.
|
|
90
95
|
const askMarker = userText.includes('mock:ask-bad')
|
|
91
96
|
? '\n\nCEZ:ASK {not valid json'
|
|
92
|
-
: userText.includes('mock:ask')
|
|
97
|
+
: userText.includes('mock:ask-invalid')
|
|
98
|
+
? '\n\nCEZ:ASK {"questions":[]}'
|
|
99
|
+
: userText.includes('mock:ask-near')
|
|
100
|
+
? '\n\nCEZ:ASK ' +
|
|
101
|
+
JSON.stringify({
|
|
102
|
+
transportHint: 'render as chips',
|
|
103
|
+
questions: [
|
|
104
|
+
{
|
|
105
|
+
header: 'Implementation path',
|
|
106
|
+
question: 'Which implementation should I use?',
|
|
107
|
+
presentation: 'compact',
|
|
108
|
+
options: [
|
|
109
|
+
{ label: 'Minimal', description: 'd'.repeat(300), recommended: true },
|
|
110
|
+
{ label: 'Expanded', description: 'Touch the wider surface' },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
})
|
|
115
|
+
: userText.includes('mock:ask')
|
|
93
116
|
? '\n\nCEZ:ASK ' +
|
|
94
117
|
JSON.stringify({
|
|
95
118
|
questions: [
|
|
@@ -113,6 +136,21 @@ async function respond(userText, imageCount) {
|
|
|
113
136
|
// `mock:slow` → hold the turn for ~25 s so queue states are observable.
|
|
114
137
|
if (userText.includes('mock:slow')) await sleep(25_000);
|
|
115
138
|
|
|
139
|
+
// Mirrors the real Claude Code 2.1.148 revoked-token envelope: the CLI puts
|
|
140
|
+
// the credential failure in an `is_error` result even though its subtype is
|
|
141
|
+
// `success`, rather than emitting a dedicated error frame.
|
|
142
|
+
if (userText.includes('mock:auth-error')) {
|
|
143
|
+
emit({
|
|
144
|
+
type: 'result',
|
|
145
|
+
subtype: 'success',
|
|
146
|
+
is_error: true,
|
|
147
|
+
result: 'Failed to authenticate. API Error: 401 OAuth access token has been revoked.',
|
|
148
|
+
usage: { input_tokens: 0, output_tokens: 0 },
|
|
149
|
+
total_cost_usd: 0,
|
|
150
|
+
});
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
116
154
|
// `mock:md` → answer with a markdown-rich reply (#346 QA: tables, nested
|
|
117
155
|
// lists, emphasis, fences, quotes) instead of the scripted turn.
|
|
118
156
|
if (userText.includes('mock:md')) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copy the repo's README into this package before it is built/packed.
|
|
3
|
+
//
|
|
4
|
+
// There is exactly one README (the repo root's): it is the project's GitHub front page AND the
|
|
5
|
+
// npm page for `@open-mercato/cezar`, and those must not be allowed to drift into two documents
|
|
6
|
+
// saying different things about the same tool. `files` can only reference paths inside the
|
|
7
|
+
// package, so the one source is copied in rather than referenced out — the copy is gitignored,
|
|
8
|
+
// regenerated by every build, and never edited by hand.
|
|
9
|
+
//
|
|
10
|
+
// Runs as `prebuild`, so `npm run build` (and the release pipeline, which builds first) always
|
|
11
|
+
// packs a current copy. `check:pack` is the gate that notices if this ever stops happening.
|
|
12
|
+
|
|
13
|
+
import { copyFileSync } from 'node:fs';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
16
|
+
|
|
17
|
+
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
18
|
+
const repoRoot = path.resolve(packageRoot, '../..');
|
|
19
|
+
|
|
20
|
+
copyFileSync(path.join(repoRoot, 'README.md'), path.join(packageRoot, 'README.md'));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,t as n}from"./react-runtime-CCIEwYL0.js";import{E as r,_ as i,b as a,c as o,d as s,f as c,g as l,h as u,l as d,o as f,p as ee,s as te,u as ne,w as re,x as p,y as m}from"./centered-state-ZtnFHA-n.js";import{t as h}from"./utils-DsLuRXwV.js";var g=e(t(),1),_=n(),v=`Dialog`,[y,b]=a(v),[ie,x]=y(v),S=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=g.useRef(null),l=g.useRef(null),[d,f]=i({prop:r,defaultProp:a??!1,onChange:o,caller:v});return(0,_.jsx)(ie,{scope:t,triggerRef:c,contentRef:l,contentId:u(),titleId:u(),descriptionId:u(),open:d,onOpenChange:f,onOpenToggle:g.useCallback(()=>f(e=>!e),[f]),modal:s,children:n})};S.displayName=v;var C=`DialogTrigger`,w=g.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=x(C,n),o=r(t,a.triggerRef);return(0,_.jsx)(p.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":B(a.open),...i,ref:o,onClick:m(e.onClick,a.onOpenToggle)})});w.displayName=C;var T=`DialogPortal`,[E,D]=y(T,{forceMount:void 0}),O=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=x(T,t);return(0,_.jsx)(E,{scope:t,forceMount:n,children:g.Children.map(r,e=>(0,_.jsx)(l,{present:n||a.open,children:(0,_.jsx)(ne,{asChild:!0,container:i,children:e})}))})};O.displayName=T;var k=`DialogOverlay`,A=g.forwardRef((e,t)=>{let n=D(k,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=x(k,e.__scopeDialog);return a.modal?(0,_.jsx)(l,{present:r||a.open,children:(0,_.jsx)(oe,{...i,ref:t})}):null});A.displayName=k;var ae=re(`DialogOverlay.RemoveScroll`),oe=g.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=x(k,n),s=r(t,ee());return(0,_.jsx)(o,{as:ae,allowPinchZoom:!0,shards:[a.contentRef],children:(0,_.jsx)(p.div,{"data-state":B(a.open),...i,ref:s,style:{pointerEvents:`auto`,...i.style}})})}),j=`DialogContent`,M=g.forwardRef((e,t)=>{let n=D(j,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=x(j,e.__scopeDialog);return(0,_.jsx)(l,{present:r||a.open,children:a.modal?(0,_.jsx)(se,{...i,ref:t}):(0,_.jsx)(ce,{...i,ref:t})})});M.displayName=j;var se=g.forwardRef((e,t)=>{let n=x(j,e.__scopeDialog),i=g.useRef(null),a=r(t,n.contentRef,i);return g.useEffect(()=>{let e=i.current;if(e)return te(e)},[]),(0,_.jsx)(N,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:m(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:m(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:m(e.onFocusOutside,e=>e.preventDefault())})}),ce=g.forwardRef((e,t)=>{let n=x(j,e.__scopeDialog),r=g.useRef(!1),i=g.useRef(!1);return(0,_.jsx)(N,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),N=g.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,l=x(j,n);return d(),(0,_.jsx)(_.Fragment,{children:(0,_.jsx)(s,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,_.jsx)(c,{role:`dialog`,id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":B(l.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>l.onOpenChange(!1)})})})}),P=`DialogTitle`,F=g.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=x(P,n);return(0,_.jsx)(p.h2,{id:i.titleId,...r,ref:t})});F.displayName=P;var I=`DialogDescription`,L=g.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=x(I,n);return(0,_.jsx)(p.p,{id:i.descriptionId,...r,ref:t})});L.displayName=I;var R=`DialogClose`,z=g.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=x(R,n);return(0,_.jsx)(p.button,{type:`button`,...r,ref:t,onClick:m(e.onClick,()=>i.onOpenChange(!1))})});z.displayName=R;function B(e){return e?`open`:`closed`}var V=`AlertDialog`,[le,ue]=a(V,[b]),H=b(),U=e=>{let{__scopeAlertDialog:t,...n}=e,r=H(t);return(0,_.jsx)(S,{...r,...n,modal:!0})};U.displayName=V;var de=`AlertDialogTrigger`,fe=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,_.jsx)(w,{...i,...r,ref:t})});fe.displayName=de;var pe=`AlertDialogPortal`,W=e=>{let{__scopeAlertDialog:t,...n}=e,r=H(t);return(0,_.jsx)(O,{...r,...n})};W.displayName=pe;var me=`AlertDialogOverlay`,G=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,_.jsx)(A,{...i,...r,ref:t})});G.displayName=me;var K=`AlertDialogContent`,[he,ge]=le(K),q=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:i,...a}=e,o=H(n),s=r(t,g.useRef(null)),c=g.useRef(null);return(0,_.jsx)(he,{scope:n,cancelRef:c,children:(0,_.jsx)(M,{role:`alertdialog`,...o,...a,ref:s,onOpenAutoFocus:m(a.onOpenAutoFocus,e=>{e.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:i})})});q.displayName=K;var _e=`AlertDialogTitle`,J=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,_.jsx)(F,{...i,...r,ref:t})});J.displayName=_e;var ve=`AlertDialogDescription`,Y=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,_.jsx)(L,{...i,...r,ref:t})});Y.displayName=ve;var ye=`AlertDialogAction`,X=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,_.jsx)(z,{...i,...r,ref:t})});X.displayName=ye;var Z=`AlertDialogCancel`,Q=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...i}=e,{cancelRef:a}=ge(Z,n),o=H(n),s=r(t,a);return(0,_.jsx)(z,{...o,...i,ref:s})});Q.displayName=Z;var be=U,xe=W,Se=G,Ce=q,we=X,Te=Q,Ee=J,De=Y;function Oe({...e}){return(0,_.jsx)(be,{"data-slot":`alert-dialog`,...e})}function ke({...e}){return(0,_.jsx)(xe,{"data-slot":`alert-dialog-portal`,...e})}function $({className:e,...t}){return(0,_.jsx)(Se,{"data-slot":`alert-dialog-overlay`,className:h(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function Ae({className:e,...t}){return(0,_.jsxs)(ke,{children:[(0,_.jsx)($,{}),(0,_.jsx)(Ce,{"data-slot":`alert-dialog-content`,className:h(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-card p-6 shadow-modal duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-md`,e),...t})]})}function je({className:e,...t}){return(0,_.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:h(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Me({className:e,...t}){return(0,_.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:h(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function Ne({className:e,...t}){return(0,_.jsx)(Ee,{"data-slot":`alert-dialog-title`,className:h(`text-lg leading-none font-semibold`,e),...t})}function Pe({className:e,...t}){return(0,_.jsx)(De,{"data-slot":`alert-dialog-description`,className:h(`text-sm text-muted-foreground`,e),...t})}function Fe({className:e,...t}){return(0,_.jsx)(we,{"data-slot":`alert-dialog-action`,className:h(f({variant:`contrast`}),e),...t})}function Ie({className:e,...t}){return(0,_.jsx)(Te,{"data-slot":`alert-dialog-cancel`,className:h(f({variant:`outline`}),e),...t})}export{Pe as a,Ne as c,M as d,L as f,w as g,F as h,Ae as i,S as l,O as m,Fe as n,Me as o,A as p,Ie as r,je as s,Oe as t,z as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./utils-DsLuRXwV.js";var t=e(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./utils-DsLuRXwV.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t};
|