@deskwork/studio 0.45.1 → 0.46.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/dist/lib/entry-resolver.d.ts +12 -11
- package/dist/lib/entry-resolver.d.ts.map +1 -1
- package/dist/lib/entry-resolver.js +19 -30
- package/dist/lib/entry-resolver.js.map +1 -1
- package/dist/pages/dashboard/lane-data.d.ts.map +1 -1
- package/dist/pages/dashboard/lane-data.js +17 -8
- package/dist/pages/dashboard/lane-data.js.map +1 -1
- package/dist/pages/dashboard/lane-data.ts +17 -8
- package/dist/pages/entry-review/data.d.ts.map +1 -1
- package/dist/pages/entry-review/data.js +44 -3
- package/dist/pages/entry-review/data.js.map +1 -1
- package/dist/pages/help.d.ts.map +1 -1
- package/dist/pages/help.js +24 -3
- package/dist/pages/help.js.map +1 -1
- package/dist/pages/help.ts +23 -3
- package/dist/pages/lanes/data.d.ts +10 -1
- package/dist/pages/lanes/data.d.ts.map +1 -1
- package/dist/pages/lanes/data.js +19 -1
- package/dist/pages/lanes/data.js.map +1 -1
- package/dist/pages/lanes/data.ts +31 -2
- package/dist/pages/lanes/edit-form.d.ts +10 -5
- package/dist/pages/lanes/edit-form.d.ts.map +1 -1
- package/dist/pages/lanes/edit-form.js +30 -11
- package/dist/pages/lanes/edit-form.js.map +1 -1
- package/dist/pages/lanes/edit-form.ts +30 -11
- package/dist/pages/lanes/new-form.d.ts +10 -7
- package/dist/pages/lanes/new-form.d.ts.map +1 -1
- package/dist/pages/lanes/new-form.js +29 -14
- package/dist/pages/lanes/new-form.js.map +1 -1
- package/dist/pages/lanes/new-form.ts +29 -14
- package/dist/pages/lanes/table.d.ts +4 -2
- package/dist/pages/lanes/table.d.ts.map +1 -1
- package/dist/pages/lanes/table.js +20 -4
- package/dist/pages/lanes/table.js.map +1 -1
- package/dist/pages/lanes/table.ts +26 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -2
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
|
@@ -8,17 +8,18 @@
|
|
|
8
8
|
* studio renders `index.md` regardless of `currentStage`. Per-stage
|
|
9
9
|
* scrapbook files are frozen snapshots produced by `approveEntryStage`.
|
|
10
10
|
*
|
|
11
|
-
* Resolution
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
11
|
+
* Resolution (Phase 39d — sites→lanes retirement; STORED PATH ONLY):
|
|
12
|
+
* The sidecar's `artifactPath` is authoritative. There is NO
|
|
13
|
+
* `<contentDir>/<slug>/index.md` fallback — per the spec
|
|
14
|
+
* §"Resolution" and the project's "no fallbacks — throw" rule, an
|
|
15
|
+
* entry without a stored path THROWS a descriptive error pointing the
|
|
16
|
+
* operator at `deskwork doctor --fix` (the migration backfiller owns
|
|
17
|
+
* stamping it). Given a stored path, the resolver prefers
|
|
18
|
+
* `<dirname(artifactPath)>/index.md` when it exists on disk (T1's
|
|
19
|
+
* index.md-canonical case) and otherwise reads `artifactPath` itself
|
|
20
|
+
* (shared-directory layouts — e.g. deskwork's own feature-doc layout
|
|
21
|
+
* where prd.md / workplan.md / README.md share a directory). That is a
|
|
22
|
+
* read-side refinement OF a stored path, not a guess for an absent one.
|
|
22
23
|
*
|
|
23
24
|
* Pre-T1 the resolver routed by stage (Ideas → idea.md, Planned →
|
|
24
25
|
* plan.md, Outlining → outline.md, Drafting/Final/Published →
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"entry-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,UAAU,aAAa;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAM1E;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAK5F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAQlC"}
|
|
@@ -8,27 +8,27 @@
|
|
|
8
8
|
* studio renders `index.md` regardless of `currentStage`. Per-stage
|
|
9
9
|
* scrapbook files are frozen snapshots produced by `approveEntryStage`.
|
|
10
10
|
*
|
|
11
|
-
* Resolution
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
11
|
+
* Resolution (Phase 39d — sites→lanes retirement; STORED PATH ONLY):
|
|
12
|
+
* The sidecar's `artifactPath` is authoritative. There is NO
|
|
13
|
+
* `<contentDir>/<slug>/index.md` fallback — per the spec
|
|
14
|
+
* §"Resolution" and the project's "no fallbacks — throw" rule, an
|
|
15
|
+
* entry without a stored path THROWS a descriptive error pointing the
|
|
16
|
+
* operator at `deskwork doctor --fix` (the migration backfiller owns
|
|
17
|
+
* stamping it). Given a stored path, the resolver prefers
|
|
18
|
+
* `<dirname(artifactPath)>/index.md` when it exists on disk (T1's
|
|
19
|
+
* index.md-canonical case) and otherwise reads `artifactPath` itself
|
|
20
|
+
* (shared-directory layouts — e.g. deskwork's own feature-doc layout
|
|
21
|
+
* where prd.md / workplan.md / README.md share a directory). That is a
|
|
22
|
+
* read-side refinement OF a stored path, not a guess for an absent one.
|
|
22
23
|
*
|
|
23
24
|
* Pre-T1 the resolver routed by stage (Ideas → idea.md, Planned →
|
|
24
25
|
* plan.md, Outlining → outline.md, Drafting/Final/Published →
|
|
25
26
|
* index.md). That routing has been retired — see Issue #222.
|
|
26
27
|
*/
|
|
27
28
|
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
28
|
-
import {
|
|
29
|
-
import { basename, dirname, join } from 'node:path';
|
|
29
|
+
import { dirname } from 'node:path';
|
|
30
30
|
import { readSidecar } from '@deskwork/core/sidecar';
|
|
31
|
-
import {
|
|
31
|
+
import { resolveArtifactPathOrThrow } from '@deskwork/core/entry/resolve-artifact';
|
|
32
32
|
/**
|
|
33
33
|
* Resolve the canonical document path for an entry. Used by both the
|
|
34
34
|
* read path (`resolveEntry`) and the write path (the Save route's
|
|
@@ -40,22 +40,11 @@ import { getContentDir } from '@deskwork/core/config';
|
|
|
40
40
|
* them drift.
|
|
41
41
|
*/
|
|
42
42
|
export function resolveIndexPath(projectRoot, entry) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
? dirname(dirname(absArtifact))
|
|
49
|
-
: dirname(absArtifact);
|
|
50
|
-
const indexPath = join(dir, 'index.md');
|
|
51
|
-
// T1's index.md-canonical preference: only if it actually exists.
|
|
52
|
-
// Otherwise fall back to artifactPath (shared-directory layouts).
|
|
53
|
-
if (existsSync(indexPath))
|
|
54
|
-
return indexPath;
|
|
55
|
-
return absArtifact;
|
|
56
|
-
}
|
|
57
|
-
const contentDir = getContentDir(projectRoot);
|
|
58
|
-
return join(contentDir, entry.slug, 'index.md');
|
|
43
|
+
// Phase 39c-2b(a): the resolve-stored-path + throw-on-absent + index.md
|
|
44
|
+
// refinement now lives in the shared core helper so the CLI verbs
|
|
45
|
+
// (publish / iterate longform) resolve identically — see
|
|
46
|
+
// `@deskwork/core/entry/resolve-artifact#resolveArtifactPathOrThrow`.
|
|
47
|
+
return resolveArtifactPathOrThrow(entry, projectRoot);
|
|
59
48
|
}
|
|
60
49
|
export async function resolveEntry(projectRoot, uuid) {
|
|
61
50
|
const entry = await readSidecar(projectRoot, uuid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-resolver.js","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"entry-resolver.js","sourceRoot":"","sources":["../../src/lib/entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AASnF;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,KAAY;IAChE,wEAAwE;IACxE,kEAAkE;IAClE,yDAAyD;IACzD,sEAAsE;IACtE,OAAO,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,IAAY;IAClE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACpD,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-data.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/lane-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS5D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS,KAAK,EAAE,CAAC;CAC5C;
|
|
1
|
+
{"version":3,"file":"lane-data.d.ts","sourceRoot":"","sources":["../../../src/pages/dashboard/lane-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS5D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS,KAAK,EAAE,CAAC;CAC5C;AA0OD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,KAAK,EAAE,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAoB5B"}
|
|
@@ -61,19 +61,25 @@ function buildEmptyStageMap(template) {
|
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Project a loaded `LaneConfig` down to the runtime-contract fields
|
|
64
|
-
* (id / name / pipelineTemplate /
|
|
65
|
-
* documentation-only `$rationale` field that the schema
|
|
66
|
-
* disk. Per AUDIT-20260530-08 the `Pick<>` alias is gone, so
|
|
67
|
-
* return type is `LaneConfig` itself; the function survives as a
|
|
68
|
-
* runtime-side projection.
|
|
64
|
+
* (id / name / pipelineTemplate / scaffoldDefaults / host / archivedAt).
|
|
65
|
+
* Drops the documentation-only `$rationale` field that the schema
|
|
66
|
+
* permits on disk. Per AUDIT-20260530-08 the `Pick<>` alias is gone, so
|
|
67
|
+
* the return type is `LaneConfig` itself; the function survives as a
|
|
68
|
+
* runtime-side projection. Per Phase 39 (sites→lanes retirement) a lane
|
|
69
|
+
* carries no `contentDir`.
|
|
69
70
|
*/
|
|
70
71
|
function strictifyLane(lane) {
|
|
71
72
|
const projected = {
|
|
72
73
|
id: lane.id,
|
|
73
74
|
name: lane.name,
|
|
74
75
|
pipelineTemplate: lane.pipelineTemplate,
|
|
75
|
-
contentDir: lane.contentDir,
|
|
76
76
|
};
|
|
77
|
+
if (lane.scaffoldDefaults !== undefined) {
|
|
78
|
+
projected.scaffoldDefaults = lane.scaffoldDefaults;
|
|
79
|
+
}
|
|
80
|
+
if (lane.host !== undefined) {
|
|
81
|
+
projected.host = lane.host;
|
|
82
|
+
}
|
|
77
83
|
if (lane.archivedAt !== undefined) {
|
|
78
84
|
projected.archivedAt = lane.archivedAt;
|
|
79
85
|
}
|
|
@@ -94,7 +100,10 @@ function strictifyLane(lane) {
|
|
|
94
100
|
* persisted." Per project rule, this isn't a silent fallback — the
|
|
95
101
|
* dashboard's data layer always emits at least one lane, and the
|
|
96
102
|
* lane's identity is documented (`id="default"`, template
|
|
97
|
-
* `editorial`, `
|
|
103
|
+
* `editorial`, `scaffoldDefaults.markdown` from
|
|
104
|
+
* `config.sites[defaultSite].contentDir`). Per Phase 39 (sites→lanes
|
|
105
|
+
* retirement) the lane carries no `contentDir`; the legacy site dir
|
|
106
|
+
* becomes the lane's add-time `scaffoldDefaults.markdown`.
|
|
98
107
|
*
|
|
99
108
|
* Throws on lane- or template-resolution failures (loud — a project
|
|
100
109
|
* with broken lane configs should not silently render an empty bay).
|
|
@@ -134,7 +143,7 @@ async function resolveAllLanes(projectRoot, config) {
|
|
|
134
143
|
id: DEFAULT_LANE_ID,
|
|
135
144
|
name: 'Default',
|
|
136
145
|
pipelineTemplate: 'editorial',
|
|
137
|
-
|
|
146
|
+
scaffoldDefaults: { markdown: site.contentDir },
|
|
138
147
|
};
|
|
139
148
|
byLane.set(DEFAULT_LANE_ID, {
|
|
140
149
|
lane,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-data.js","sourceRoot":"","sources":["../../../src/pages/dashboard/lane-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,MAAM,eAAe,GAAG,SAAS,CAAC;AA8DlC,SAAS,kBAAkB,CACzB,QAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY;QAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,iBAAiB;QAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"lane-data.js","sourceRoot":"","sources":["../../../src/pages/dashboard/lane-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -135,19 +135,25 @@ function buildEmptyStageMap(
|
|
|
135
135
|
|
|
136
136
|
/**
|
|
137
137
|
* Project a loaded `LaneConfig` down to the runtime-contract fields
|
|
138
|
-
* (id / name / pipelineTemplate /
|
|
139
|
-
* documentation-only `$rationale` field that the schema
|
|
140
|
-
* disk. Per AUDIT-20260530-08 the `Pick<>` alias is gone, so
|
|
141
|
-
* return type is `LaneConfig` itself; the function survives as a
|
|
142
|
-
* runtime-side projection.
|
|
138
|
+
* (id / name / pipelineTemplate / scaffoldDefaults / host / archivedAt).
|
|
139
|
+
* Drops the documentation-only `$rationale` field that the schema
|
|
140
|
+
* permits on disk. Per AUDIT-20260530-08 the `Pick<>` alias is gone, so
|
|
141
|
+
* the return type is `LaneConfig` itself; the function survives as a
|
|
142
|
+
* runtime-side projection. Per Phase 39 (sites→lanes retirement) a lane
|
|
143
|
+
* carries no `contentDir`.
|
|
143
144
|
*/
|
|
144
145
|
function strictifyLane(lane: LaneConfig): LaneConfig {
|
|
145
146
|
const projected: LaneConfig = {
|
|
146
147
|
id: lane.id,
|
|
147
148
|
name: lane.name,
|
|
148
149
|
pipelineTemplate: lane.pipelineTemplate,
|
|
149
|
-
contentDir: lane.contentDir,
|
|
150
150
|
};
|
|
151
|
+
if (lane.scaffoldDefaults !== undefined) {
|
|
152
|
+
projected.scaffoldDefaults = lane.scaffoldDefaults;
|
|
153
|
+
}
|
|
154
|
+
if (lane.host !== undefined) {
|
|
155
|
+
projected.host = lane.host;
|
|
156
|
+
}
|
|
151
157
|
if (lane.archivedAt !== undefined) {
|
|
152
158
|
projected.archivedAt = lane.archivedAt;
|
|
153
159
|
}
|
|
@@ -169,7 +175,10 @@ function strictifyLane(lane: LaneConfig): LaneConfig {
|
|
|
169
175
|
* persisted." Per project rule, this isn't a silent fallback — the
|
|
170
176
|
* dashboard's data layer always emits at least one lane, and the
|
|
171
177
|
* lane's identity is documented (`id="default"`, template
|
|
172
|
-
* `editorial`, `
|
|
178
|
+
* `editorial`, `scaffoldDefaults.markdown` from
|
|
179
|
+
* `config.sites[defaultSite].contentDir`). Per Phase 39 (sites→lanes
|
|
180
|
+
* retirement) the lane carries no `contentDir`; the legacy site dir
|
|
181
|
+
* becomes the lane's add-time `scaffoldDefaults.markdown`.
|
|
173
182
|
*
|
|
174
183
|
* Throws on lane- or template-resolution failures (loud — a project
|
|
175
184
|
* with broken lane configs should not silently render an empty bay).
|
|
@@ -214,7 +223,7 @@ async function resolveAllLanes(
|
|
|
214
223
|
id: DEFAULT_LANE_ID,
|
|
215
224
|
name: 'Default',
|
|
216
225
|
pipelineTemplate: 'editorial',
|
|
217
|
-
|
|
226
|
+
scaffoldDefaults: { markdown: site.contentDir },
|
|
218
227
|
};
|
|
219
228
|
byLane.set(DEFAULT_LANE_ID, {
|
|
220
229
|
lane,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/pages/entry-review/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,6BAA6B,CAAC;AAahE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;2EACuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD;;4CAEwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;wEACoE;IACpE,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;iEAG6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/pages/entry-review/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,6BAA6B,CAAC;AAahE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;2EACuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD;;4CAEwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;wEACoE;IACpE,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;iEAG6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAmND,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,eAAe,CAAC,CA2D1B"}
|
|
@@ -26,7 +26,7 @@ import { resolveCalendarPath } from '@deskwork/core/paths';
|
|
|
26
26
|
import { listEntryIterations, getEntryIteration, } from '@deskwork/core/iterate/history';
|
|
27
27
|
import { listEntryAnnotations } from '@deskwork/core/entry/annotations';
|
|
28
28
|
import { readSidecar, sidecarPath } from '@deskwork/core/sidecar';
|
|
29
|
-
import { isPopulatedGroupEntry } from '@deskwork/core/groups';
|
|
29
|
+
import { isGroupEntry, isPopulatedGroupEntry } from '@deskwork/core/groups';
|
|
30
30
|
import { listLaneConfigs, loadLaneConfig, } from '@deskwork/core/lanes';
|
|
31
31
|
import { loadPipelineTemplate, } from '@deskwork/core/pipelines';
|
|
32
32
|
const VALID_STAGES = new Set([
|
|
@@ -47,6 +47,17 @@ function parseStageParam(raw) {
|
|
|
47
47
|
* `config.defaultSite` with a null `calendarEntry` when no calendar
|
|
48
48
|
* carries the entry.
|
|
49
49
|
*
|
|
50
|
+
* Phase 39c (sites→lanes retirement) NOTE: the calendar is now a single
|
|
51
|
+
* project file (`resolveCalendarPath` is site-independent), so iterating
|
|
52
|
+
* `config.sites` reads the SAME calendar per key — harmless redundancy
|
|
53
|
+
* while `sites` is retained for the CLI-verb path. The returned `site`
|
|
54
|
+
* is still threaded into the CLI-verb content-index + verb-command
|
|
55
|
+
* surfaces (`getIndex(site)`, `lookupCalendarEntryStrict`), so it must
|
|
56
|
+
* remain a real configured site slug until 39c-2b migrates that path.
|
|
57
|
+
* Collapsing the returned label to a synthetic `project` scope here
|
|
58
|
+
* breaks the content-index keying — deferred to 39c-2b with the rest of
|
|
59
|
+
* the CLI-verb resolution migration.
|
|
60
|
+
*
|
|
50
61
|
* Failures (calendar absent, parse error) fall through to the default
|
|
51
62
|
* — the press-check surface should render even when calendar resolution
|
|
52
63
|
* is wonky for an unrelated reason.
|
|
@@ -175,11 +186,17 @@ async function loadGroupMembersBundle(projectRoot, group) {
|
|
|
175
186
|
continue;
|
|
176
187
|
try {
|
|
177
188
|
const config = loadLaneConfig(laneId, projectRoot);
|
|
189
|
+
// Phase 39 (sites→lanes retirement): a lane carries no
|
|
190
|
+
// contentDir. Project the runtime-contract fields; scaffoldDefaults
|
|
191
|
+
// / host are optional and copied only when present.
|
|
178
192
|
const strict = {
|
|
179
193
|
id: config.id,
|
|
180
194
|
name: config.name,
|
|
181
195
|
pipelineTemplate: config.pipelineTemplate,
|
|
182
|
-
|
|
196
|
+
...(config.scaffoldDefaults !== undefined && {
|
|
197
|
+
scaffoldDefaults: config.scaffoldDefaults,
|
|
198
|
+
}),
|
|
199
|
+
...(config.host !== undefined && { host: config.host }),
|
|
183
200
|
};
|
|
184
201
|
// Load template FIRST; only register the lane once the
|
|
185
202
|
// template-side load succeeds. If the template load throws,
|
|
@@ -210,8 +227,32 @@ async function loadGroupMembersBundle(projectRoot, group) {
|
|
|
210
227
|
templatesById,
|
|
211
228
|
};
|
|
212
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Resolve an entry's sidecar + artifact body, with a declared-group
|
|
232
|
+
* fallback (Phase 39c). For a non-group entry, defers entirely to
|
|
233
|
+
* `resolveEntry` (stored-path-only; throws when artifactPath is absent).
|
|
234
|
+
* For a DECLARED GROUP entry (`members` array present) that has no
|
|
235
|
+
* artifactPath, the group has no artifact of its own — read the sidecar
|
|
236
|
+
* and return an empty body so the Members section renders. A group that
|
|
237
|
+
* DOES carry an artifactPath still resolves through `resolveEntry`.
|
|
238
|
+
*/
|
|
239
|
+
async function resolveEntryOrGroup(projectRoot, entryId) {
|
|
240
|
+
const sidecar = await readSidecar(projectRoot, entryId);
|
|
241
|
+
if (isGroupEntry(sidecar) && sidecar.artifactPath === undefined) {
|
|
242
|
+
return { entry: sidecar, artifactBody: '', artifactPath: '' };
|
|
243
|
+
}
|
|
244
|
+
return resolveEntry(projectRoot, entryId);
|
|
245
|
+
}
|
|
213
246
|
export async function loadEntryReviewData(ctx, entryId, opts = {}) {
|
|
214
|
-
|
|
247
|
+
// Phase 39c (sites→lanes retirement): entry resolution reads the stored
|
|
248
|
+
// artifactPath only (no slug+stage fallback) and THROWS when it is
|
|
249
|
+
// absent. A DECLARED GROUP (`members` array present) legitimately has
|
|
250
|
+
// no artifact of its own — its body is its members. For such an entry
|
|
251
|
+
// without an artifactPath, read the sidecar directly and render with
|
|
252
|
+
// empty markdown so the Members section / empty-state CTA shows instead
|
|
253
|
+
// of a 404. Non-group entries still require an artifact (resolveEntry
|
|
254
|
+
// throws → the route renders the not-found shell).
|
|
255
|
+
const resolved = await resolveEntryOrGroup(ctx.projectRoot, entryId);
|
|
215
256
|
const iterations = await listEntryIterations(ctx.projectRoot, entryId);
|
|
216
257
|
const annotations = await listEntryAnnotations(ctx.projectRoot, entryId);
|
|
217
258
|
const { site, calendarEntry } = findEntrySite(ctx, entryId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/pages/entry-review/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/pages/entry-review/data.ts"],"names":[],"mappings":"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"}
|
package/dist/pages/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6atD,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4BzD"}
|
package/dist/pages/help.js
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
* Shortform + distribution still use the workflow-object model.
|
|
26
26
|
*/
|
|
27
27
|
import { KIND_LABEL, SKILLS_SORTED, } from "../lib/editorial-skills-catalogue.js";
|
|
28
|
+
import { listLaneConfigs, loadLaneConfig } from '@deskwork/core/lanes';
|
|
28
29
|
import { html, unsafe } from "./html.js";
|
|
29
30
|
import { layout } from "./layout.js";
|
|
30
31
|
import { renderEditorialFolio } from "./chrome.js";
|
|
@@ -35,10 +36,30 @@ const MONTH_NAMES = [
|
|
|
35
36
|
function formatIssueDate(now) {
|
|
36
37
|
return `${now.getDate()} ${MONTH_NAMES[now.getMonth()]} ${now.getFullYear()}`;
|
|
37
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Phase 39c (sites→lanes retirement): the imprint's host list reads
|
|
41
|
+
* `lane.host` from the project's lane configs (a lane publishes to a
|
|
42
|
+
* host when it renders a website), NOT the retired `config.sites[*].host`.
|
|
43
|
+
* Lanes without a host (internal-doc collections) contribute nothing.
|
|
44
|
+
* Malformed lane files are skipped — a cosmetic imprint must not crash
|
|
45
|
+
* the help page.
|
|
46
|
+
*/
|
|
47
|
+
function collectLaneHosts(ctx) {
|
|
48
|
+
const hosts = [];
|
|
49
|
+
for (const laneId of listLaneConfigs(ctx.projectRoot)) {
|
|
50
|
+
try {
|
|
51
|
+
const lane = loadLaneConfig(laneId, ctx.projectRoot);
|
|
52
|
+
if (lane.host !== undefined && lane.host.length > 0)
|
|
53
|
+
hosts.push(lane.host);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// skip unreadable lane — surfaced by doctor, not here
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return hosts;
|
|
60
|
+
}
|
|
38
61
|
function renderCover(ctx, now) {
|
|
39
|
-
const sitesInline =
|
|
40
|
-
.map((s) => s.host)
|
|
41
|
-
.join(' · ');
|
|
62
|
+
const sitesInline = collectLaneHosts(ctx).join(' · ');
|
|
42
63
|
return unsafe(html `
|
|
43
64
|
<header class="er-pagehead er-pagehead--centered eh-cover">
|
|
44
65
|
<p class="er-pagehead__kicker eh-cover-kicker">
|
package/dist/pages/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACL,UAAU,EACV,aAAa,GAEd,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/pages/help.ts"],"names":[],"mappings":"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"}
|
package/dist/pages/help.ts
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
SKILLS_SORTED,
|
|
31
31
|
type Skill,
|
|
32
32
|
} from '../lib/editorial-skills-catalogue.ts';
|
|
33
|
+
import { listLaneConfigs, loadLaneConfig } from '@deskwork/core/lanes';
|
|
33
34
|
import type { StudioContext } from '../routes/api.ts';
|
|
34
35
|
import { html, unsafe, type RawHtml } from './html.ts';
|
|
35
36
|
import { layout } from './layout.ts';
|
|
@@ -44,10 +45,29 @@ function formatIssueDate(now: Date): string {
|
|
|
44
45
|
return `${now.getDate()} ${MONTH_NAMES[now.getMonth()]} ${now.getFullYear()}`;
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Phase 39c (sites→lanes retirement): the imprint's host list reads
|
|
50
|
+
* `lane.host` from the project's lane configs (a lane publishes to a
|
|
51
|
+
* host when it renders a website), NOT the retired `config.sites[*].host`.
|
|
52
|
+
* Lanes without a host (internal-doc collections) contribute nothing.
|
|
53
|
+
* Malformed lane files are skipped — a cosmetic imprint must not crash
|
|
54
|
+
* the help page.
|
|
55
|
+
*/
|
|
56
|
+
function collectLaneHosts(ctx: StudioContext): string[] {
|
|
57
|
+
const hosts: string[] = [];
|
|
58
|
+
for (const laneId of listLaneConfigs(ctx.projectRoot)) {
|
|
59
|
+
try {
|
|
60
|
+
const lane = loadLaneConfig(laneId, ctx.projectRoot);
|
|
61
|
+
if (lane.host !== undefined && lane.host.length > 0) hosts.push(lane.host);
|
|
62
|
+
} catch {
|
|
63
|
+
// skip unreadable lane — surfaced by doctor, not here
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return hosts;
|
|
67
|
+
}
|
|
68
|
+
|
|
47
69
|
function renderCover(ctx: StudioContext, now: Date): RawHtml {
|
|
48
|
-
const sitesInline =
|
|
49
|
-
.map((s) => s.host)
|
|
50
|
-
.join(' · ');
|
|
70
|
+
const sitesInline = collectLaneHosts(ctx).join(' · ');
|
|
51
71
|
return unsafe(html`
|
|
52
72
|
<header class="er-pagehead er-pagehead--centered eh-cover">
|
|
53
73
|
<p class="er-pagehead__kicker eh-cover-kicker">
|
|
@@ -46,7 +46,16 @@ export interface LaneRow {
|
|
|
46
46
|
readonly id: string;
|
|
47
47
|
readonly name: string;
|
|
48
48
|
readonly pipelineTemplate: string;
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Add-time scaffold directories keyed by artifact kind. Per Phase 39
|
|
51
|
+
* (sites→lanes retirement) a lane carries no `contentDir`; this is the
|
|
52
|
+
* lane's only location-adjacent metadata and is an add-time
|
|
53
|
+
* convenience only — never identity, never resolution. Empty object
|
|
54
|
+
* when the lane defines no scaffold defaults.
|
|
55
|
+
*/
|
|
56
|
+
readonly scaffoldDefaults: Readonly<Record<string, string>>;
|
|
57
|
+
/** Website host — present only when the lane publishes a site. */
|
|
58
|
+
readonly host: string | null;
|
|
50
59
|
readonly archived: boolean;
|
|
51
60
|
readonly archivedAt: string | null;
|
|
52
61
|
readonly entryCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/pages/lanes/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAWH;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/pages/lanes/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAWH;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,KAAK,GACL,aAAa,GACb,kBAAkB,GAClB,SAAS,GACT,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,yEAAyE;IACzE,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAqGD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CA0CxB"}
|
package/dist/pages/lanes/data.js
CHANGED
|
@@ -42,6 +42,21 @@ import { listLaneConfigs, loadLaneConfig, } from '@deskwork/core/lanes';
|
|
|
42
42
|
import { listAvailablePipelineTemplates } from '@deskwork/core/pipelines';
|
|
43
43
|
import { readAllSidecars } from '@deskwork/core/sidecar';
|
|
44
44
|
import { join } from 'node:path';
|
|
45
|
+
/**
|
|
46
|
+
* Normalize a lane's optional `scaffoldDefaults` (a partial map that may
|
|
47
|
+
* carry `undefined` values) into a plain `Record<string, string>`
|
|
48
|
+
* dropping any undefined entries — the renderer-facing shape.
|
|
49
|
+
*/
|
|
50
|
+
function normalizeScaffoldDefaults(scaffoldDefaults) {
|
|
51
|
+
const out = {};
|
|
52
|
+
if (scaffoldDefaults === undefined)
|
|
53
|
+
return out;
|
|
54
|
+
for (const [kind, dir] of Object.entries(scaffoldDefaults)) {
|
|
55
|
+
if (typeof dir === 'string' && dir.length > 0)
|
|
56
|
+
out[kind] = dir;
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
45
60
|
function laneRowFromConfig(id, config, entryCount) {
|
|
46
61
|
const archivedAt = typeof config.archivedAt === 'string' && config.archivedAt.length > 0
|
|
47
62
|
? config.archivedAt
|
|
@@ -50,7 +65,10 @@ function laneRowFromConfig(id, config, entryCount) {
|
|
|
50
65
|
id,
|
|
51
66
|
name: config.name,
|
|
52
67
|
pipelineTemplate: config.pipelineTemplate,
|
|
53
|
-
|
|
68
|
+
scaffoldDefaults: normalizeScaffoldDefaults(config.scaffoldDefaults),
|
|
69
|
+
host: typeof config.host === 'string' && config.host.length > 0
|
|
70
|
+
? config.host
|
|
71
|
+
: null,
|
|
54
72
|
archived: archivedAt !== null,
|
|
55
73
|
archivedAt,
|
|
56
74
|
entryCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/pages/lanes/data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/pages/lanes/data.ts"],"names":[],"mappings":"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"}
|