@open-mercato/cezar 0.13.0 → 0.14.0
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 +3 -2
- package/dist/agent-config/catalog.d.ts +4 -0
- package/dist/agent-config/catalog.js +85 -3
- package/dist/agent-config/catalog.js.map +1 -1
- package/dist/agent-config/model-settings/copilot.d.ts +15 -0
- package/dist/agent-config/model-settings/copilot.js +25 -0
- package/dist/agent-config/model-settings/copilot.js.map +1 -0
- package/dist/agent-config/model-settings/junie.d.ts +12 -0
- package/dist/agent-config/model-settings/junie.js +18 -0
- package/dist/agent-config/model-settings/junie.js.map +1 -0
- package/dist/agent-config/models.js +4 -0
- package/dist/agent-config/models.js.map +1 -1
- package/dist/automations/prompts.d.ts +2 -2
- package/dist/automations/prompts.js +1 -1
- package/dist/automations/types.d.ts +12 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/contract/agent-config.d.ts +4 -0
- package/dist/contract/agent-profiles.d.ts +30 -0
- package/dist/contract/automations.d.ts +32 -0
- package/dist/contract/dashboard-insights.d.ts +186 -0
- package/dist/contract/dashboard.d.ts +88 -0
- package/dist/contract/dispatch.d.ts +6 -0
- package/dist/contract/health.d.ts +8 -0
- package/dist/contract/index.d.ts +2 -0
- package/dist/contract/index.js +249 -72
- package/dist/contract/runs.d.ts +144 -0
- package/dist/contract/self-update.d.ts +111 -2
- package/dist/contract/skills.d.ts +19 -0
- package/dist/contract/star-count.d.ts +18 -0
- package/dist/contract/workflows.d.ts +12 -0
- package/dist/contract/workspace.d.ts +42 -2
- package/dist/core/acp-client.d.ts +99 -0
- package/dist/core/acp-client.js +198 -0
- package/dist/core/acp-client.js.map +1 -0
- package/dist/core/acp-ui-mapper.d.ts +95 -0
- package/dist/core/acp-ui-mapper.js +444 -0
- package/dist/core/acp-ui-mapper.js.map +1 -0
- package/dist/core/agent-env.js +10 -0
- package/dist/core/agent-env.js.map +1 -1
- package/dist/core/agent-profiles.d.ts +10 -0
- package/dist/core/agent-profiles.js +16 -0
- package/dist/core/agent-profiles.js.map +1 -1
- package/dist/core/agent-runner.d.ts +5 -3
- package/dist/core/agent-runner.js +5 -3
- package/dist/core/agent-runner.js.map +1 -1
- package/dist/core/backend-detect.d.ts +3 -3
- package/dist/core/backend-detect.js +61 -2
- package/dist/core/backend-detect.js.map +1 -1
- package/dist/core/claude-cli-runner.d.ts +5 -2
- package/dist/core/claude-cli-runner.js +11 -6
- package/dist/core/claude-cli-runner.js.map +1 -1
- package/dist/core/claude-ui-mapper.d.ts +14 -0
- package/dist/core/claude-ui-mapper.js +102 -11
- package/dist/core/claude-ui-mapper.js.map +1 -1
- package/dist/core/codex-app-server-transport.js +8 -4
- package/dist/core/codex-app-server-transport.js.map +1 -1
- package/dist/core/copilot-acp-runner.d.ts +60 -0
- package/dist/core/copilot-acp-runner.js +528 -0
- package/dist/core/copilot-acp-runner.js.map +1 -0
- package/dist/core/copilot-ui-mapper.d.ts +47 -0
- package/dist/core/copilot-ui-mapper.js +111 -0
- package/dist/core/copilot-ui-mapper.js.map +1 -0
- package/dist/core/cursor-agent-runner.js +4 -4
- package/dist/core/cursor-agent-runner.js.map +1 -1
- package/dist/core/disclaim-spawn.d.ts +9 -0
- package/dist/core/disclaim-spawn.js +53 -0
- package/dist/core/disclaim-spawn.js.map +1 -0
- package/dist/core/junie-acp-transport.d.ts +58 -0
- package/dist/core/junie-acp-transport.js +179 -0
- package/dist/core/junie-acp-transport.js.map +1 -0
- package/dist/core/junie-auth-probe.d.ts +12 -0
- package/dist/core/junie-auth-probe.js +30 -0
- package/dist/core/junie-auth-probe.js.map +1 -0
- package/dist/core/junie-model-catalog.d.ts +10 -0
- package/dist/core/junie-model-catalog.js +104 -0
- package/dist/core/junie-model-catalog.js.map +1 -0
- package/dist/core/junie-runner.d.ts +45 -0
- package/dist/core/junie-runner.js +533 -0
- package/dist/core/junie-runner.js.map +1 -0
- package/dist/core/junie-ui-mapper.d.ts +132 -0
- package/dist/core/junie-ui-mapper.js +459 -0
- package/dist/core/junie-ui-mapper.js.map +1 -0
- package/dist/core/model-identity.js +17 -0
- package/dist/core/model-identity.js.map +1 -1
- package/dist/core/model-presets.js +10 -0
- package/dist/core/model-presets.js.map +1 -1
- package/dist/core/opencode-server-runner.js +4 -4
- package/dist/core/opencode-server-runner.js.map +1 -1
- package/dist/core/pi-runner.js +4 -4
- package/dist/core/pi-runner.js.map +1 -1
- package/dist/core/provider-auth.d.ts +16 -2
- package/dist/core/provider-auth.js +113 -7
- package/dist/core/provider-auth.js.map +1 -1
- package/dist/core/runner-factory.js +6 -0
- package/dist/core/runner-factory.js.map +1 -1
- package/dist/core/runner-model-catalog.js +12 -8
- package/dist/core/runner-model-catalog.js.map +1 -1
- package/dist/core/tool-display.js +6 -1
- package/dist/core/tool-display.js.map +1 -1
- package/dist/core/ui-events.d.ts +6 -2
- package/dist/git-diff-base.js +23 -2
- package/dist/git-diff-base.js.map +1 -1
- package/dist/git-worktree.d.ts +21 -2
- package/dist/git-worktree.js +68 -5
- package/dist/git-worktree.js.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/paths.js +2 -0
- package/dist/paths.js.map +1 -1
- package/dist/runs/event-history.js +3 -0
- package/dist/runs/event-history.js.map +1 -1
- package/dist/runs/store.d.ts +42 -3
- package/dist/runs/store.js +112 -6
- package/dist/runs/store.js.map +1 -1
- package/dist/self-update/checkouts.d.ts +53 -0
- package/dist/self-update/checkouts.js +268 -0
- package/dist/self-update/checkouts.js.map +1 -0
- package/dist/self-update/cli.d.ts +5 -3
- package/dist/self-update/cli.js +75 -8
- package/dist/self-update/cli.js.map +1 -1
- package/dist/self-update/layout.d.ts +33 -1
- package/dist/self-update/layout.js +102 -3
- package/dist/self-update/layout.js.map +1 -1
- package/dist/self-update/pulls.d.ts +40 -0
- package/dist/self-update/pulls.js +127 -0
- package/dist/self-update/pulls.js.map +1 -0
- package/dist/self-update/service.d.ts +26 -3
- package/dist/self-update/service.js +85 -9
- package/dist/self-update/service.js.map +1 -1
- package/dist/server/dashboard.d.ts +107 -0
- package/dist/server/dashboard.js +2 -1
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/forge/github.js +4 -1
- package/dist/server/forge/github.js.map +1 -1
- package/dist/server/fs-browse.d.ts +3 -1
- package/dist/server/fs-browse.js +27 -5
- package/dist/server/fs-browse.js.map +1 -1
- package/dist/server/open-in-app.js +2 -0
- package/dist/server/open-in-app.js.map +1 -1
- package/dist/server/provider-action-gate.js +5 -1
- package/dist/server/provider-action-gate.js.map +1 -1
- package/dist/server/server.d.ts +880 -511
- package/dist/server/server.js +40 -5
- package/dist/server/server.js.map +1 -1
- package/dist/server/star-count.d.ts +67 -0
- package/dist/server/star-count.js +186 -0
- package/dist/server/star-count.js.map +1 -0
- package/dist/skills-banner.d.ts +19 -0
- package/dist/skills-banner.js +24 -0
- package/dist/skills-banner.js.map +1 -1
- package/dist/workflows/run.d.ts +0 -2
- package/dist/workflows/run.js +45 -29
- package/dist/workflows/run.js.map +1 -1
- package/dist/workflows/types.d.ts +6 -0
- package/dist/workspace/agent-accounts.d.ts +9 -1
- package/dist/workspace/agent-accounts.js +2 -0
- package/dist/workspace/agent-accounts.js.map +1 -1
- package/dist/workspace/agent-profiles.d.ts +2 -2
- package/dist/workspace/agent-profiles.js +25 -6
- package/dist/workspace/agent-profiles.js.map +1 -1
- package/dist/workspace/config.d.ts +9 -1
- package/dist/workspace/config.js +10 -3
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/dashboard-insights.d.ts +42 -0
- package/dist/workspace/dashboard-insights.js +220 -0
- package/dist/workspace/dashboard-insights.js.map +1 -0
- package/dist/workspace/dashboard.d.ts +71 -1
- package/dist/workspace/dashboard.js +14 -1
- package/dist/workspace/dashboard.js.map +1 -1
- package/dist/workspace/semaphore.d.ts +3 -0
- package/dist/workspace/semaphore.js +8 -1
- package/dist/workspace/semaphore.js.map +1 -1
- package/package.json +3 -3
- package/scripts/mock-claude.mjs +34 -1
- package/scripts/mock-copilot-acp.mjs +190 -0
- package/scripts/mock-junie-acp.mjs +208 -0
- package/web/dist/assets/agent-task-pickers-BeQi-UTm.js +1 -0
- package/web/dist/assets/alert-dialog-CnRAuqwb.js +1 -0
- package/web/dist/assets/arrow-down-Da0kNRNH.js +1 -0
- package/web/dist/assets/arrow-left-BIZHhBIP.js +1 -0
- package/web/dist/assets/automation-format-CfPmkcsg.js +1 -0
- package/web/dist/assets/automations-route-AMJbFP53.js +1 -0
- package/web/dist/assets/centered-state-3r2Kaar_.js +1 -0
- package/web/dist/assets/chevron-left-DLAUPC66.js +1 -0
- package/web/dist/assets/chevron-right-KVZcXiPL.js +1 -0
- package/web/dist/assets/{circle-x-C9UoMP1V.js → circle-x-C0Jm5Ppb.js} +1 -1
- package/web/dist/assets/collapsible-DG_SIWqU.js +1 -0
- package/web/dist/assets/command-Dfln3D4A.js +1 -0
- package/web/dist/assets/{commit-list-BSfPsVsu.js → commit-list-_RA72yB_.js} +1 -1
- package/web/dist/assets/compare-variants-D6Ji6od4.js +1 -0
- package/web/dist/assets/dashboard-B3-tPimG.js +44 -0
- package/web/dist/assets/dialog-CiDREdUK.js +1 -0
- package/web/dist/assets/{diff-I0xowULh.js → diff-CxdyRumG.js} +2 -2
- package/web/dist/assets/diff-controls-DqJMMV4z.js +1 -0
- package/web/dist/assets/{diff-stat-yKn7joEr.js → diff-stat-Hupj4hxh.js} +1 -1
- package/web/dist/assets/{diff-view-DjvMeW1M.js → diff-view-BBYT5k6c.js} +1 -1
- package/web/dist/assets/dist-BqMwqJFX.js +1 -0
- package/web/dist/assets/dist-DpiX6WjA.js +1 -0
- package/web/dist/assets/{download-BcgZ2yk4.js → download-BR7EN9gW.js} +1 -1
- package/web/dist/assets/dropdown-menu-Ci4HFML0.js +1 -0
- package/web/dist/assets/editable-title-DDtUgRKZ.js +1 -0
- package/web/dist/assets/{ellipsis-vertical-g4O4NlLV.js → ellipsis-vertical-DBklom4U.js} +1 -1
- package/web/dist/assets/facet-filter-CfI4QvOd.js +1 -0
- package/web/dist/assets/{file-wXNeZwi7.js → file-CZb7cKNH.js} +1 -1
- package/web/dist/assets/{file-text-DV1gE2L6.js → file-text-Dm6CrEGW.js} +1 -1
- package/web/dist/assets/{folder-wjVId5un.js → folder-zQj-FYOo.js} +1 -1
- package/web/dist/assets/{git-pull-request-BBEDdTLK.js → git-pull-request-AhwzJc7s.js} +1 -1
- package/web/dist/assets/git-toolbar-j7gKkhGL.js +1 -0
- package/web/dist/assets/github-De-DFy8s.js +1 -0
- package/web/dist/assets/{image-preview-u1f-wzxC.js → image-preview-Dd3NVB7N.js} +1 -1
- package/web/dist/assets/index-HS1hr5Sz.js +12 -0
- package/web/dist/assets/index-YwgrLyBj.css +2 -0
- package/web/dist/assets/loader-circle-sk4vKJKp.js +1 -0
- package/web/dist/assets/{markdown-Bnm47qUl.js → markdown-DjNR-1p8.js} +2 -2
- package/web/dist/assets/new-task-form-vLs2G1_z.js +1 -0
- package/web/dist/assets/picker-pill-VW-M1ZiV.js +1 -0
- package/web/dist/assets/{pill-7dm3vWF7.js → pill-CPl6sysj.js} +1 -1
- package/web/dist/assets/popover-CNGONAql.js +1 -0
- package/web/dist/assets/project-router-dCZQu1wQ.js +1 -0
- package/web/dist/assets/{prompt-templates-BMZ5q5H_.js → prompt-templates-jNjVTAws.js} +1 -1
- package/web/dist/assets/{refresh-cw-C69euZ2H.js → refresh-cw-BfkEydKA.js} +1 -1
- package/web/dist/assets/repo-git-BZWZ6_pR.js +1 -0
- package/web/dist/assets/{run-diff-CoNVGn23.js → run-diff-u_roDsAJ.js} +2 -2
- package/web/dist/assets/run-header-Br1yJR0m.js +1 -0
- package/web/dist/assets/{search-x-BNLFOxI6.js → search-x-CT0NTqK1.js} +1 -1
- package/web/dist/assets/segmented-IDD4ucht.js +1 -0
- package/web/dist/assets/skills-Dsi5YdLG.js +1 -0
- package/web/dist/assets/{sparkles-ChorK-gZ.js → sparkles-CvOeAoyJ.js} +1 -1
- package/web/dist/assets/{square-terminal-C7KCPznz.js → square-terminal-eSs8YYZe.js} +1 -1
- package/web/dist/assets/{tab-link-E5O2Cesc.js → tab-link-CPF6ORha.js} +1 -1
- package/web/dist/assets/task-changes-DIT9Y1rh.js +1 -0
- package/web/dist/assets/task-commits-B4VvdiHH.js +1 -0
- package/web/dist/assets/task-files-BMm9C0DW.js +2 -0
- package/web/dist/assets/task-thread-RXabJAt0.js +9 -0
- package/web/dist/assets/{textarea-DLAfWPb0.js → textarea-DtBqPhIs.js} +1 -1
- package/web/dist/assets/thread-loading-Dnxb6Ar-.js +1 -0
- package/web/dist/assets/toaster-CfRVb8vH.js +43 -0
- package/web/dist/assets/token-metrics-DldVlr6m.js +1 -0
- package/web/dist/assets/tooltip-_O50N3pt.js +1 -0
- package/web/dist/assets/tracker-J0fdcH1G.js +4 -0
- package/web/dist/assets/{trash-2-_vwSMdPG.js → trash-2-CUH7GOVh.js} +1 -1
- package/web/dist/assets/{triangle-alert-fBRUkB46.js → triangle-alert-D5K_zyD3.js} +1 -1
- package/web/dist/assets/{upload-B4OIpdyq.js → upload-D7_n-9cl.js} +1 -1
- package/web/dist/assets/{use-now-sqAvRMna.js → use-now-3lElDuTi.js} +1 -1
- package/web/dist/assets/utils-BXvEm7Ve.js +64 -0
- package/web/dist/assets/workflows-D-dx9c_0.js +7 -0
- package/web/dist/assets/x-kLybIvX4.js +1 -0
- package/web/dist/assets/{zoomable-image-X81SApIg.js → zoomable-image-CnyQ9wyw.js} +1 -1
- package/web/dist/index.html +38 -36
- package/web/dist/assets/agent-task-pickers-DQ1qvgrD.js +0 -1
- package/web/dist/assets/alert-dialog-B_2uU4Bg.js +0 -1
- package/web/dist/assets/arrow-down-DieVZxSE.js +0 -1
- package/web/dist/assets/arrow-left-C8M0efjn.js +0 -1
- package/web/dist/assets/automation-format-CzinzpHK.js +0 -1
- package/web/dist/assets/automations-route-DYHUjV9R.js +0 -1
- package/web/dist/assets/centered-state-DJLgwvA4.js +0 -43
- package/web/dist/assets/chevron-left-BhXrOEE3.js +0 -1
- package/web/dist/assets/chevron-right-B3Ta8VKK.js +0 -1
- package/web/dist/assets/collapsible-BcKvItwg.js +0 -1
- package/web/dist/assets/command-BvGGv2_u.js +0 -1
- package/web/dist/assets/compare-variants-DBvMYMs3.js +0 -1
- package/web/dist/assets/dashboard-CGaFh4RV.js +0 -44
- package/web/dist/assets/dialog-B6NgKh0-.js +0 -1
- package/web/dist/assets/diff-controls-DskkZqmD.js +0 -1
- package/web/dist/assets/dist-BvXEdcbG.js +0 -1
- package/web/dist/assets/dist-CTksUkKh.js +0 -1
- package/web/dist/assets/dropdown-menu-B7HeKCfN.js +0 -1
- package/web/dist/assets/editable-title-BHbHmSIK.js +0 -1
- package/web/dist/assets/facet-filter-DZ3wfvN9.js +0 -1
- package/web/dist/assets/git-toolbar-EZuX4Cuz.js +0 -1
- package/web/dist/assets/github-zcLRxv77.js +0 -1
- package/web/dist/assets/index-BrZhA4_u.css +0 -2
- package/web/dist/assets/index-CSNFuBvj.js +0 -12
- package/web/dist/assets/loader-circle-Cwgo6onL.js +0 -1
- package/web/dist/assets/new-task-form-CQODCzBP.js +0 -1
- package/web/dist/assets/picker-pill-DNB9ETjS.js +0 -1
- package/web/dist/assets/popover-BRq6QnwI.js +0 -1
- package/web/dist/assets/project-router-I8Pbsrxy.js +0 -1
- package/web/dist/assets/repo-git-G436Abni.js +0 -1
- package/web/dist/assets/run-header-CxdaA86t.js +0 -1
- package/web/dist/assets/skills-C_kBDesq.js +0 -1
- package/web/dist/assets/task-changes-Bhw4Ysvg.js +0 -1
- package/web/dist/assets/task-commits-DBuGXuGm.js +0 -1
- package/web/dist/assets/task-files-CYDbeffM.js +0 -2
- package/web/dist/assets/task-thread-RuxHMJgN.js +0 -9
- package/web/dist/assets/thread-loading-BAuVAbcA.js +0 -1
- package/web/dist/assets/token-metrics-rVl4kXe_.js +0 -1
- package/web/dist/assets/tooltip-Bdl8mQG8.js +0 -1
- package/web/dist/assets/tracker-DJ8JW59-.js +0 -4
- package/web/dist/assets/utils-DoBmOlX3.js +0 -64
- package/web/dist/assets/workflows-C54D7mlm.js +0 -7
- package/web/dist/assets/x-HXr9KZBr.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -38,6 +38,7 @@ import { discoverClaudeModels } from '../core/claude-model-catalog.js';
|
|
|
38
38
|
import { discoverCodexModels } from '../core/codex-model-catalog.js';
|
|
39
39
|
import { discoverCursorModels } from '../core/cursor-model-catalog.js';
|
|
40
40
|
import { discoverOpencodeModels } from '../core/opencode-model-catalog.js';
|
|
41
|
+
import { discoverJunieModels } from '../core/junie-model-catalog.js';
|
|
41
42
|
import { PROVIDER_IDS, ProviderAuthService, providerAuthChecksDisabled, } from '../core/provider-auth.js';
|
|
42
43
|
import { applyProviderEnablement } from '../core/provider-availability.js';
|
|
43
44
|
import { RunnerModelCatalog } from '../core/runner-model-catalog.js';
|
|
@@ -49,8 +50,9 @@ import { QUICK_TASK_WORKFLOW, normalizeWorkflowDoc, skillStackOf, skillsToSteps,
|
|
|
49
50
|
import { planChain, slugify } from '../planner.js';
|
|
50
51
|
import { discoverSkills } from '../skills.js';
|
|
51
52
|
import { SkillsUpdateConflictError, SkillsUpdateCoordinator, SkillsUpdateService } from '../skills-update.js';
|
|
52
|
-
import { selfUpdateApplyRequestSchema, selfUpdateChannelRequestSchema } from '../contract/index.js';
|
|
53
|
+
import { selfUpdateApplyRequestSchema, selfUpdateChannelRequestSchema, selfUpdateDevelopmentQuerySchema } from '../contract/index.js';
|
|
53
54
|
import { SelfUpdateBusyError, SelfUpdateService } from '../self-update/service.js';
|
|
55
|
+
import { StarCountReader } from './star-count.js';
|
|
54
56
|
import { getTeamSkillsCached, refreshTeamSkills, waitForTeamSkills } from '../skills-remote.js';
|
|
55
57
|
import { appendHandoffHeartbeat, handoffProgressExcerpt, readHandoff } from '../handoff.js';
|
|
56
58
|
import { markStarted, onTodosChanged, readTodos, removeTodo, todoTaskText } from '../todos.js';
|
|
@@ -464,6 +466,11 @@ const uiStateSchema = z
|
|
|
464
466
|
// The GitHub tab's last-selected sub-tab (#417): issues or PRs. ADDITIVE — an old
|
|
465
467
|
// ui-state.json without the key behaves as the default (issues).
|
|
466
468
|
githubView: z.enum(['issues', 'prs']).optional(),
|
|
469
|
+
// The GitHub tab's list order: newest first (what `gh` returns) or oldest first, for working
|
|
470
|
+
// the backlog from the long-waiting end. ADDITIVE, like `githubView` above — an old
|
|
471
|
+
// ui-state.json without the key behaves as the default (newest), and the sort is applied
|
|
472
|
+
// client-side, so this key changes presentation only, never what `GET /github` fetches.
|
|
473
|
+
githubSort: z.enum(['newest', 'oldest']).optional(),
|
|
467
474
|
// Settings → Appearance (redesign R6): accent + density. ADDITIVE — the theme itself
|
|
468
475
|
// stays in the browser (`cez-theme` localStorage, pre-paint). The cockpit always PUTs
|
|
469
476
|
// the whole object because the top-level merge below is shallow.
|
|
@@ -741,10 +748,11 @@ export function createApp(deps) {
|
|
|
741
748
|
claude: { discover: () => discoverClaudeModels({ cwd: bootRoot }) },
|
|
742
749
|
codex: { discover: () => discoverCodexModels({ cwd: bootRoot }) },
|
|
743
750
|
opencode: { discover: () => discoverOpencodeModels({ cwd: bootRoot }) },
|
|
751
|
+
junie: { discover: () => discoverJunieModels({ cwd: bootRoot }) },
|
|
744
752
|
cursor: { discover: () => discoverCursorModels() },
|
|
745
753
|
},
|
|
746
754
|
});
|
|
747
|
-
const providerAuth = deps.providerAuth ?? new ProviderAuthService();
|
|
755
|
+
const providerAuth = deps.providerAuth ?? new ProviderAuthService({ cwd: bootRoot });
|
|
748
756
|
const workspaceConfig = deps.workspaceConfig ?? {
|
|
749
757
|
load: loadWorkspaceConfig,
|
|
750
758
|
mergeWrite: mergeWriteWorkspaceConfig,
|
|
@@ -805,6 +813,7 @@ export function createApp(deps) {
|
|
|
805
813
|
readOnly: true,
|
|
806
814
|
trimPaths: () => !capabilities().localHandoff,
|
|
807
815
|
});
|
|
816
|
+
const starCount = deps.starCount ?? new StarCountReader();
|
|
808
817
|
// ---- workspace boot-project identity (multi-project spec) ----------------
|
|
809
818
|
// The boot flow (`initWorkspace` in src/index.ts) registers the boot repo
|
|
810
819
|
// and plumbs its registry id in via `deps.bootProjectId`. Legacy callers and
|
|
@@ -1365,7 +1374,7 @@ export function createApp(deps) {
|
|
|
1365
1374
|
// `modelDiscoveryRunnerSchema` is the contract's own list of the runners with an
|
|
1366
1375
|
// authoritative host-local catalog (#794, #784), so the client compiles against exactly what
|
|
1367
1376
|
// this validates. A runner absent from it has no discovery path and this 400s.
|
|
1368
|
-
.get('/models', queryZodValidator(z.object({ runner: z.union([z.string(), z.array(z.string()).transform((v) => v[0])]).pipe(modelDiscoveryRunnerSchema) }), { message: 'runner must be claude, codex, opencode, or
|
|
1377
|
+
.get('/models', queryZodValidator(z.object({ runner: z.union([z.string(), z.array(z.string()).transform((v) => v[0])]).pipe(modelDiscoveryRunnerSchema) }), { message: 'runner must be claude, codex, opencode, cursor, or junie' }), async (c) => {
|
|
1369
1378
|
const query = { data: c.req.valid('query') };
|
|
1370
1379
|
return c.json(await modelCatalog.get(query.data.runner));
|
|
1371
1380
|
});
|
|
@@ -1466,7 +1475,7 @@ export function createApp(deps) {
|
|
|
1466
1475
|
workspaceEvents.emit('provider-status', row);
|
|
1467
1476
|
return c.json(result);
|
|
1468
1477
|
})
|
|
1469
|
-
.post('/providers/connect', jsonZodValidator(providerConnectSchema, { message: 'provider must be claude, codex, opencode, cursor, or
|
|
1478
|
+
.post('/providers/connect', jsonZodValidator(providerConnectSchema, { message: 'provider must be claude, codex, opencode, cursor, pi, or copilot' }), async (c) => {
|
|
1470
1479
|
const body = { data: c.req.valid('json') };
|
|
1471
1480
|
const provider = body.data.provider;
|
|
1472
1481
|
// A NAMED account is refused in hosted mode before anything is resolved, exactly like every
|
|
@@ -2493,10 +2502,19 @@ export function createApp(deps) {
|
|
|
2493
2502
|
// registry, so the request cannot inject code, and a VPS behind the installer's Basic auth
|
|
2494
2503
|
// is exactly where "update from the cockpit" replaces `cezar server-deploy` — but hosted
|
|
2495
2504
|
// applies are FORWARD-ONLY (see the guard on /apply below).
|
|
2505
|
+
// ---- chained family: the star ask (workspace-level) ----------------------
|
|
2506
|
+
// cezar's own star count, for the cockpit's ⭐ button. Workspace-level and single-mount, like
|
|
2507
|
+
// `/health`: it says nothing about any project, and there is nothing for a project scope to
|
|
2508
|
+
// change about it. Never fails — `{ available: false }` is the ordinary offline answer, so the
|
|
2509
|
+
// cockpit's chip simply is not there rather than showing an error nobody asked for.
|
|
2510
|
+
const starCountRoutes = new Hono().get('/star-count', async (c) => c.json(await starCount.read()));
|
|
2496
2511
|
const selfUpdateRoutes = new Hono()
|
|
2497
2512
|
.get('/workspace/self-update', async (c) => c.json(await selfUpdate.status()))
|
|
2498
2513
|
.post('/workspace/self-update/refresh', async (c) => c.json(await selfUpdate.status({ refresh: true })))
|
|
2499
|
-
|
|
2514
|
+
// The development channel's pickers: cezar's own worktrees and its open PRs' preview builds.
|
|
2515
|
+
// A separate read because it costs a git call per worktree and a GitHub round trip.
|
|
2516
|
+
.get('/workspace/self-update/development', queryZodValidator(selfUpdateDevelopmentQuerySchema), async (c) => c.json(await selfUpdate.development({ refresh: c.req.valid('query').refresh === '1' })))
|
|
2517
|
+
.put('/workspace/self-update/channel', jsonZodValidator(selfUpdateChannelRequestSchema, { message: 'body must be { channel: "stable" | "nightly" | "development" }' }), async (c) => {
|
|
2500
2518
|
const { channel } = c.req.valid('json');
|
|
2501
2519
|
await selfUpdate.setChannel(channel);
|
|
2502
2520
|
return c.json(await selfUpdate.status());
|
|
@@ -2567,6 +2585,7 @@ export function createApp(deps) {
|
|
|
2567
2585
|
resources: {
|
|
2568
2586
|
maxParallel: config.resources.maxParallel,
|
|
2569
2587
|
maxMonitoringSessions: config.resources.maxMonitoringSessions,
|
|
2588
|
+
idleTimeoutMinutes: config.resources.idleTimeoutMinutes,
|
|
2570
2589
|
monitoringWakeIntervalMinutes: config.resources.monitoringWakeIntervalMinutes,
|
|
2571
2590
|
autoResumeOnUsageLimit: config.resources.autoResumeOnUsageLimit,
|
|
2572
2591
|
memoryLimitMb: config.resources.memoryLimitMb,
|
|
@@ -2733,6 +2752,7 @@ export function createApp(deps) {
|
|
|
2733
2752
|
.object({
|
|
2734
2753
|
maxParallel: z.number().int().min(1).max(16).optional(),
|
|
2735
2754
|
maxMonitoringSessions: z.number().int().min(0).max(16).optional(),
|
|
2755
|
+
idleTimeoutMinutes: z.number().int().min(0).max(1440).nullable().optional(),
|
|
2736
2756
|
monitoringWakeIntervalMinutes: z.number().int().min(1).max(60).nullable().optional(),
|
|
2737
2757
|
autoResumeOnUsageLimit: z.boolean().optional(),
|
|
2738
2758
|
memoryLimitMb: z.number().int().min(0).max(1_048_576).nullable().optional(),
|
|
@@ -2751,6 +2771,8 @@ export function createApp(deps) {
|
|
|
2751
2771
|
opencode: z.string().trim().min(1).max(200).nullable().optional(),
|
|
2752
2772
|
cursor: z.string().trim().min(1).max(200).nullable().optional(),
|
|
2753
2773
|
pi: z.string().trim().min(1).max(200).nullable().optional(),
|
|
2774
|
+
junie: z.string().trim().min(1).max(200).nullable().optional(),
|
|
2775
|
+
copilot: z.string().trim().min(1).max(200).nullable().optional(),
|
|
2754
2776
|
})
|
|
2755
2777
|
.optional(),
|
|
2756
2778
|
})
|
|
@@ -5660,6 +5682,8 @@ export function createApp(deps) {
|
|
|
5660
5682
|
if (typeof number === 'number' && Number.isInteger(number) && number > 0)
|
|
5661
5683
|
numbers.push(number);
|
|
5662
5684
|
}
|
|
5685
|
+
for (const ref of run.prRefs ?? [])
|
|
5686
|
+
numbers.push(ref.number);
|
|
5663
5687
|
return numbers;
|
|
5664
5688
|
};
|
|
5665
5689
|
const runIndexEntry = (projectId, run) => {
|
|
@@ -5696,6 +5720,7 @@ export function createApp(deps) {
|
|
|
5696
5720
|
? { referencedPullRequestUrl: run.referencedPullRequestUrl }
|
|
5697
5721
|
: {}),
|
|
5698
5722
|
...(run.prNumber !== undefined ? { prNumber: run.prNumber } : {}),
|
|
5723
|
+
...(run.prRefs !== undefined ? { prRefs: run.prRefs } : {}),
|
|
5699
5724
|
...(run.issueNumber !== undefined ? { issueNumber: run.issueNumber } : {}),
|
|
5700
5725
|
...(run.referencedIssueUrl !== undefined ? { referencedIssueUrl: run.referencedIssueUrl } : {}),
|
|
5701
5726
|
...(run.markerRefs !== undefined ? { markerRefs: run.markerRefs } : {}),
|
|
@@ -5828,6 +5853,7 @@ export function createApp(deps) {
|
|
|
5828
5853
|
.route('/', agentProfilesRoutes)
|
|
5829
5854
|
.route('/', skillsUpdateRoutes)
|
|
5830
5855
|
.route('/', selfUpdateRoutes)
|
|
5856
|
+
.route('/', starCountRoutes)
|
|
5831
5857
|
.route('/', workspaceConfigRoutes)
|
|
5832
5858
|
.route('/', fsBrowseRoutes)
|
|
5833
5859
|
.route('/', automationChecksRoutes)
|
|
@@ -6172,6 +6198,12 @@ export function resumeCommand(runner, sessionId) {
|
|
|
6172
6198
|
if (!isSafeSessionId(sessionId))
|
|
6173
6199
|
return null;
|
|
6174
6200
|
switch (runner) {
|
|
6201
|
+
case 'junie':
|
|
6202
|
+
// Verified live (`junie --help`, 26.9.22): `--resume` alone reopens the LAST session;
|
|
6203
|
+
// the target session is named by the separate `--session-id=<id>` flag, not a positional
|
|
6204
|
+
// argument (junie's positional slot is `[<task>]`) — `junie --resume ${sessionId}` would
|
|
6205
|
+
// silently resume the wrong session and read the id as a task prompt instead.
|
|
6206
|
+
return `junie --resume --session-id=${sessionId}`;
|
|
6175
6207
|
case 'codex':
|
|
6176
6208
|
return `codex resume ${sessionId}`;
|
|
6177
6209
|
case 'opencode':
|
|
@@ -6182,6 +6214,9 @@ export function resumeCommand(runner, sessionId) {
|
|
|
6182
6214
|
}
|
|
6183
6215
|
case 'pi':
|
|
6184
6216
|
return `pi --session ${sessionId}`;
|
|
6217
|
+
case 'copilot':
|
|
6218
|
+
// `--resume <id>` takes a session id, a task id or an id prefix (`copilot --help`, 1.0.88).
|
|
6219
|
+
return `copilot --resume ${sessionId}`;
|
|
6185
6220
|
default:
|
|
6186
6221
|
return `claude --resume ${sessionId}`;
|
|
6187
6222
|
}
|