@open-mercato/cezar 0.9.1-pr705.844 → 0.9.1-pr706.868
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/dist/server/forge/index.d.ts +8 -1
- package/dist/server/forge/index.js +14 -1
- package/dist/server/forge/index.js.map +1 -1
- package/dist/server/server.js +25 -7
- package/dist/server/server.js.map +1 -1
- package/dist/server-install/platforms/ubuntu-vps.d.ts +15 -0
- package/dist/server-install/platforms/ubuntu-vps.js +83 -1
- package/dist/server-install/platforms/ubuntu-vps.js.map +1 -1
- package/dist/workspace/projects.d.ts +7 -1
- package/dist/workspace/projects.js +9 -3
- package/dist/workspace/projects.js.map +1 -1
- package/package.json +2 -2
- package/web/dist/assets/alert-dialog-CqA7-o5o.js +1 -0
- package/web/dist/assets/collapsible-CbGRlmvJ.js +1 -0
- package/web/dist/assets/compare-variants-C-QxZ7g5.js +1 -0
- package/web/dist/assets/diff-SOW64exZ2.js +3 -0
- package/web/dist/assets/{diff-view-CPL3GUgh.js → diff-view-CZ9-DeN4.js} +4 -4
- package/web/dist/assets/dropdown-menu-BmtETw9T.js +1 -0
- package/web/dist/assets/git-toolbar-CQLW8aTk.js +1 -0
- package/web/dist/assets/github-MAYOzen1.js +1 -0
- package/web/dist/assets/index-C3yDW-E5.css +2 -0
- package/web/dist/assets/index-DSTWuVF3.js +22 -0
- package/web/dist/assets/new-task-form-umhQeDuQ.js +1 -0
- package/web/dist/assets/{repo-git-D4oyqtPR.js → repo-git-Cj6-F8Vx.js} +1 -1
- package/web/dist/assets/run-diff-Lcwe24zx.js +3 -0
- package/web/dist/assets/run-header-h_vX3Vbp.js +1 -0
- package/web/dist/assets/skills-C-ZQkBg_.js +1 -0
- package/web/dist/assets/{task-changes-noIrnu9G.js → task-changes-BnVoUjWU.js} +1 -1
- package/web/dist/assets/task-commits-Burf2FSe.js +1 -0
- package/web/dist/assets/task-files-D_eNpY-s.js +2 -0
- package/web/dist/assets/task-thread-Cu_lcWqK.js +9 -0
- package/web/dist/assets/{use-desktop-DpM2CSDg.js → use-desktop-Bs2zwN3k.js} +1 -1
- package/web/dist/assets/workflows-BsCGBm5Y.js +11 -0
- package/web/dist/index.html +7 -3
- package/web/dist/assets/compare-variants--IUax1iv.js +0 -1
- package/web/dist/assets/diff-CNt01FyY.js +0 -3
- package/web/dist/assets/dist-BDertzy3.js +0 -1
- package/web/dist/assets/git-toolbar-PuZTnn2Z.js +0 -1
- package/web/dist/assets/github-DHTw87wy.js +0 -1
- package/web/dist/assets/index-CrdG_TLt.css +0 -2
- package/web/dist/assets/index-DiyQLNs2.js +0 -22
- package/web/dist/assets/run-diff-DLo_-8Et.js +0 -3
- package/web/dist/assets/run-header-CiBeaAnP.js +0 -1
- package/web/dist/assets/skills-Bed45O3c.js +0 -1
- package/web/dist/assets/task-commits-bDEF2Jfz.js +0 -1
- package/web/dist/assets/task-files-BOOblfZc.js +0 -2
- package/web/dist/assets/task-thread-BbyYsjLW.js +0 -9
- package/web/dist/assets/workflows-DMH4Gabv.js +0 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RepoInfo } from '../git.js';
|
|
2
|
-
import type { ForgeDriver } from './types.js';
|
|
2
|
+
import type { ForgeDriver, ForgeKind } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Forge resolution (cockpit-ui redesign spec §"Forge-driver seam"): map the
|
|
5
5
|
* repo's origin remote to a driver — github.com → the GitHub driver, anything
|
|
@@ -19,6 +19,13 @@ export interface ParsedRemote {
|
|
|
19
19
|
* else that doesn't look like a forge remote.
|
|
20
20
|
*/
|
|
21
21
|
export declare function parseRemote(remote: string): ParsedRemote | null;
|
|
22
|
+
/**
|
|
23
|
+
* Which forge a remote URL belongs to, without building a driver (#698): the
|
|
24
|
+
* registry's per-project probe classifies each root from its remote alone —
|
|
25
|
+
* plain string parsing, no `gh` shell-out — so the sidebar can gate each
|
|
26
|
+
* project's GitHub tab on the project's own remote.
|
|
27
|
+
*/
|
|
28
|
+
export declare function forgeKindOfRemote(remote: string | undefined): ForgeKind | null;
|
|
22
29
|
/** Remote host → driver | null. GitLab lands here later as one more case. */
|
|
23
30
|
export declare function resolveForge(repoInfo: RepoInfo | null): ForgeDriver | null;
|
|
24
31
|
export type { ForgeDriver, ForgeAvailability, ForgeItem, ForgeKind, ForgePrStatus, ForgeRefKind } from './types.js';
|
|
@@ -30,6 +30,19 @@ export function parseRemote(remote) {
|
|
|
30
30
|
return null;
|
|
31
31
|
return { host: host.toLowerCase(), owner, repo };
|
|
32
32
|
}
|
|
33
|
+
/** Remote host → forge kind. The one host table both `resolveForge` and the
|
|
34
|
+
* registry probe read; GitLab lands here later as one more row. */
|
|
35
|
+
const FORGE_HOSTS = { 'github.com': 'github' };
|
|
36
|
+
/**
|
|
37
|
+
* Which forge a remote URL belongs to, without building a driver (#698): the
|
|
38
|
+
* registry's per-project probe classifies each root from its remote alone —
|
|
39
|
+
* plain string parsing, no `gh` shell-out — so the sidebar can gate each
|
|
40
|
+
* project's GitHub tab on the project's own remote.
|
|
41
|
+
*/
|
|
42
|
+
export function forgeKindOfRemote(remote) {
|
|
43
|
+
const parsed = remote ? parseRemote(remote) : null;
|
|
44
|
+
return parsed ? (FORGE_HOSTS[parsed.host] ?? null) : null;
|
|
45
|
+
}
|
|
33
46
|
/** Remote host → driver | null. GitLab lands here later as one more case. */
|
|
34
47
|
export function resolveForge(repoInfo) {
|
|
35
48
|
if (!repoInfo?.remote)
|
|
@@ -37,7 +50,7 @@ export function resolveForge(repoInfo) {
|
|
|
37
50
|
const parsed = parseRemote(repoInfo.remote);
|
|
38
51
|
if (!parsed)
|
|
39
52
|
return null;
|
|
40
|
-
if (parsed.host === 'github
|
|
53
|
+
if (FORGE_HOSTS[parsed.host] === 'github') {
|
|
41
54
|
return createGithubDriver(repoInfo.root, { owner: parsed.owner, repo: parsed.repo });
|
|
42
55
|
}
|
|
43
56
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/forge/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiBjD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAwB,CAAC;IAC7B,MAAM,GAAG,GAAG,uEAAuE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,GAAG,EAAE,CAAC;QACR,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,GAAG,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,QAAyB;IACpD,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/forge/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiBjD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAwB,CAAC;IAC7B,MAAM,GAAG,GAAG,uEAAuE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,GAAG,EAAE,CAAC;QACR,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,GAAG,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;oEACoE;AACpE,MAAM,WAAW,GAA8B,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,QAAyB;IACpD,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/server/server.js
CHANGED
|
@@ -238,13 +238,24 @@ const SKILL_USAGE_MAX_ENTRIES = 200;
|
|
|
238
238
|
// generous for GUI prefs; over-limit is a 400, never a silent strip. Shared by
|
|
239
239
|
// BOTH ui-state routes (per-repo and workspace) via `parseUiStateBody`.
|
|
240
240
|
const UI_STATE_MAX_KEYS = 200;
|
|
241
|
-
/** Settings → Appearance (redesign R6): accent + density
|
|
242
|
-
* ui-state files — per-repo (the legacy home, kept so an older
|
|
243
|
-
* same repo still honours it) and workspace
|
|
244
|
-
* post-migration home — multi-project spec,
|
|
241
|
+
/** Settings → Appearance (redesign R6): accent + density + reading width. ONE
|
|
242
|
+
* schema for both ui-state files — per-repo (the legacy home, kept so an older
|
|
243
|
+
* cezar in the same repo still honours it) and workspace
|
|
244
|
+
* (`~/.cezar/ui-state.json`, its post-migration home — multi-project spec,
|
|
245
|
+
* Data Model).
|
|
246
|
+
*
|
|
247
|
+
* Every key is `.optional()` so an older ui-state.json parses unchanged, but
|
|
248
|
+
* each one must be listed HERE: the enclosing `workspaceUiStateSchema` is
|
|
249
|
+
* `.passthrough()` at the top level only, so an unlisted key inside
|
|
250
|
+
* `appearance` is stripped by zod and then wiped from the file by the shallow
|
|
251
|
+
* merge-on-write. The cockpit adopts the PUT response as authoritative, so a
|
|
252
|
+
* stripped key does not merely fail to persist — it visibly reverts the
|
|
253
|
+
* control the user just touched. Adding an appearance preference means adding
|
|
254
|
+
* it here in the same change. */
|
|
245
255
|
const appearanceSchema = z.object({
|
|
246
256
|
accent: z.enum(['lime', 'violet']).optional(),
|
|
247
257
|
density: z.enum(['comfortable', 'compact', 'ultra']).optional(),
|
|
258
|
+
width: z.enum(['narrow', 'wide']).optional(),
|
|
248
259
|
});
|
|
249
260
|
const providerAuthDismissalsSchema = z
|
|
250
261
|
.object({
|
|
@@ -2146,9 +2157,16 @@ export function createApp(deps) {
|
|
|
2146
2157
|
if (!parsed.success) {
|
|
2147
2158
|
return c.json({ error: parsed.error.issues.map((i) => i.message).join('; ') }, 400);
|
|
2148
2159
|
}
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2160
|
+
// Stacking onto a queued prompt mutates an existing task and invokes no provider.
|
|
2161
|
+
// Provider availability still gates live delivery after the record leaves `queued`, but
|
|
2162
|
+
// must not strand prompt authoring just because an unrelated fallback provider is
|
|
2163
|
+
// disconnected (provider-auth spec: disabling never blocks existing-task mutations).
|
|
2164
|
+
// In the dequeue race, the ladder below safely turns this into a starting-state buffer.
|
|
2165
|
+
if (run.status !== 'queued') {
|
|
2166
|
+
const blocked = await providerActionError([providerForActiveRun(run)]);
|
|
2167
|
+
if (blocked)
|
|
2168
|
+
return c.json({ error: blocked }, 409);
|
|
2169
|
+
}
|
|
2152
2170
|
const content = [
|
|
2153
2171
|
...parsed.data.images.map((img) => ({
|
|
2154
2172
|
type: 'image',
|