@deskwork/core 0.45.2 → 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/config.d.ts +14 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -12
- package/dist/config.js.map +1 -1
- package/dist/content-index.d.ts +25 -0
- package/dist/content-index.d.ts.map +1 -1
- package/dist/content-index.js +142 -15
- package/dist/content-index.js.map +1 -1
- package/dist/doctor/index.d.ts +3 -0
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +3 -0
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/legacy-config.d.ts +98 -0
- package/dist/doctor/legacy-config.d.ts.map +1 -0
- package/dist/doctor/legacy-config.js +174 -0
- package/dist/doctor/legacy-config.js.map +1 -0
- package/dist/doctor/project-scope-gate.d.ts +12 -21
- package/dist/doctor/project-scope-gate.d.ts.map +1 -1
- package/dist/doctor/project-scope-gate.js +13 -25
- package/dist/doctor/project-scope-gate.js.map +1 -1
- package/dist/doctor/repair.d.ts +11 -0
- package/dist/doctor/repair.d.ts.map +1 -1
- package/dist/doctor/repair.js +10 -89
- package/dist/doctor/repair.js.map +1 -1
- package/dist/doctor/rules/duplicate-id.d.ts +7 -2
- package/dist/doctor/rules/duplicate-id.d.ts.map +1 -1
- package/dist/doctor/rules/duplicate-id.js +8 -5
- package/dist/doctor/rules/duplicate-id.js.map +1 -1
- package/dist/doctor/rules/duplicate-id.ts +8 -5
- package/dist/doctor/rules/legacy-top-level-id-migration.d.ts.map +1 -1
- package/dist/doctor/rules/legacy-top-level-id-migration.js +11 -8
- package/dist/doctor/rules/legacy-top-level-id-migration.js.map +1 -1
- package/dist/doctor/rules/legacy-top-level-id-migration.ts +10 -11
- package/dist/doctor/rules/sites-to-lanes-migration.d.ts +39 -0
- package/dist/doctor/rules/sites-to-lanes-migration.d.ts.map +1 -0
- package/dist/doctor/rules/sites-to-lanes-migration.js +395 -0
- package/dist/doctor/rules/sites-to-lanes-migration.js.map +1 -0
- package/dist/doctor/rules/sites-to-lanes-migration.ts +449 -0
- package/dist/doctor/rules/workflow-stale.d.ts.map +1 -1
- package/dist/doctor/rules/workflow-stale.js +5 -2
- package/dist/doctor/rules/workflow-stale.js.map +1 -1
- package/dist/doctor/rules/workflow-stale.ts +5 -1
- package/dist/doctor/runner.d.ts +15 -1
- package/dist/doctor/runner.d.ts.map +1 -1
- package/dist/doctor/runner.js +48 -41
- package/dist/doctor/runner.js.map +1 -1
- package/dist/doctor/sites-migration-backfill.d.ts +71 -0
- package/dist/doctor/sites-migration-backfill.d.ts.map +1 -0
- package/dist/doctor/sites-migration-backfill.js +164 -0
- package/dist/doctor/sites-migration-backfill.js.map +1 -0
- package/dist/doctor/validate.d.ts.map +1 -1
- package/dist/doctor/validate.js +34 -73
- package/dist/doctor/validate.js.map +1 -1
- package/dist/entry/resolve-artifact.d.ts +80 -0
- package/dist/entry/resolve-artifact.d.ts.map +1 -0
- package/dist/entry/resolve-artifact.js +102 -0
- package/dist/entry/resolve-artifact.js.map +1 -0
- package/dist/entry/shortform-path.d.ts +34 -0
- package/dist/entry/shortform-path.d.ts.map +1 -0
- package/dist/entry/shortform-path.js +50 -0
- package/dist/entry/shortform-path.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/iterate/iterate.d.ts.map +1 -1
- package/dist/iterate/iterate.js +21 -26
- package/dist/iterate/iterate.js.map +1 -1
- package/dist/lanes/bootstrap.d.ts +11 -7
- package/dist/lanes/bootstrap.d.ts.map +1 -1
- package/dist/lanes/bootstrap.js +42 -17
- package/dist/lanes/bootstrap.js.map +1 -1
- package/dist/lanes/index.d.ts +1 -0
- package/dist/lanes/index.d.ts.map +1 -1
- package/dist/lanes/index.js +6 -0
- package/dist/lanes/index.js.map +1 -1
- package/dist/lanes/loader.d.ts +33 -6
- package/dist/lanes/loader.d.ts.map +1 -1
- package/dist/lanes/loader.js +44 -11
- package/dist/lanes/loader.js.map +1 -1
- package/dist/lanes/operations/create.d.ts +11 -2
- package/dist/lanes/operations/create.d.ts.map +1 -1
- package/dist/lanes/operations/create.js +15 -4
- package/dist/lanes/operations/create.js.map +1 -1
- package/dist/lanes/operations/list.d.ts +3 -2
- package/dist/lanes/operations/list.d.ts.map +1 -1
- package/dist/lanes/operations/list.js +3 -2
- package/dist/lanes/operations/list.js.map +1 -1
- package/dist/lanes/operations/move.d.ts +29 -25
- package/dist/lanes/operations/move.d.ts.map +1 -1
- package/dist/lanes/operations/move.js +45 -242
- package/dist/lanes/operations/move.js.map +1 -1
- package/dist/lanes/operations/update.d.ts +15 -5
- package/dist/lanes/operations/update.d.ts.map +1 -1
- package/dist/lanes/operations/update.js +32 -12
- package/dist/lanes/operations/update.js.map +1 -1
- package/dist/lanes/scaffold-path.d.ts +88 -0
- package/dist/lanes/scaffold-path.d.ts.map +1 -0
- package/dist/lanes/scaffold-path.js +122 -0
- package/dist/lanes/scaffold-path.js.map +1 -0
- package/dist/lanes/types.d.ts +54 -31
- package/dist/lanes/types.d.ts.map +1 -1
- package/dist/lanes/types.js +60 -21
- package/dist/lanes/types.js.map +1 -1
- package/dist/outline-split.d.ts +2 -3
- package/dist/outline-split.d.ts.map +1 -1
- package/dist/outline-split.js +2 -3
- package/dist/outline-split.js.map +1 -1
- package/dist/paths.d.ts +14 -87
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +21 -131
- package/dist/paths.js.map +1 -1
- package/dist/remark-strip-outline.mjs +2 -3
- package/dist/rename-slug.d.ts +3 -3
- package/dist/rename-slug.d.ts.map +1 -1
- package/dist/rename-slug.js +137 -44
- package/dist/rename-slug.js.map +1 -1
- package/dist/review/handlers.d.ts +3 -3
- package/dist/review/handlers.d.ts.map +1 -1
- package/dist/review/handlers.js +18 -14
- package/dist/review/handlers.js.map +1 -1
- package/dist/review/report.d.ts +13 -2
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +48 -18
- package/dist/review/report.js.map +1 -1
- package/dist/review/start-handlers.d.ts +4 -4
- package/dist/review/start-handlers.d.ts.map +1 -1
- package/dist/review/start-handlers.js +25 -25
- package/dist/review/start-handlers.js.map +1 -1
- package/dist/review/workflow-paths.d.ts +24 -26
- package/dist/review/workflow-paths.d.ts.map +1 -1
- package/dist/review/workflow-paths.js +70 -60
- package/dist/review/workflow-paths.js.map +1 -1
- package/dist/schema/draft-annotation.d.ts +8 -8
- package/dist/schema/entry.d.ts +6 -6
- package/dist/schema/journal-events.d.ts +56 -42
- package/dist/schema/journal-events.d.ts.map +1 -1
- package/dist/schema/journal-events.js +23 -9
- package/dist/schema/journal-events.js.map +1 -1
- package/dist/sidecar/read.d.ts +8 -0
- package/dist/sidecar/read.d.ts.map +1 -1
- package/dist/sidecar/read.js +36 -9
- package/dist/sidecar/read.js.map +1 -1
- package/dist/sidecar/write.d.ts +14 -0
- package/dist/sidecar/write.d.ts.map +1 -1
- package/dist/sidecar/write.js +25 -0
- package/dist/sidecar/write.js.map +1 -1
- package/package.json +9 -9
- package/dist/body-state.d.ts +0 -27
- package/dist/body-state.d.ts.map +0 -1
- package/dist/body-state.js +0 -62
- package/dist/body-state.js.map +0 -1
- package/dist/scaffold.d.ts +0 -67
- package/dist/scaffold.d.ts.map +0 -1
- package/dist/scaffold.js +0 -122
- package/dist/scaffold.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lanes/bootstrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lanes/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/lanes/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
export { LaneConfigSchema, ArtifactKindSchema, LANE_ID_REGEX, type LaneConfig, type ArtifactKind, } from './types.ts';
|
|
11
11
|
export { loadLaneConfig, listLaneConfigs, lanesDir, laneConfigPath, type ListLaneConfigsOptions, } from './loader.ts';
|
|
12
12
|
export { detectArtifactKind } from './detection.ts';
|
|
13
|
+
export { composeAddArtifactPath, layoutToContentRelativePath, parseScaffoldLayout, DEFAULT_SCAFFOLD_LAYOUT, SCAFFOLD_LAYOUTS, type ScaffoldLayout, } from './scaffold-path.ts';
|
|
13
14
|
export { bootstrapDefaultLaneIfMissing, type BootstrapResult, } from './bootstrap.ts';
|
|
14
15
|
export { resolveEntryTemplate, resolveEntryStrictTemplate, } from './resolve.ts';
|
|
15
16
|
export { stageNameToFilesystemToken } from '../pipelines/stage-token.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lanes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,cAAc,EACd,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lanes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,cAAc,EACd,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOpD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,EAC7B,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAIzE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC"}
|
package/dist/lanes/index.js
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
export { LaneConfigSchema, ArtifactKindSchema, LANE_ID_REGEX, } from "./types.js";
|
|
11
11
|
export { loadLaneConfig, listLaneConfigs, lanesDir, laneConfigPath, } from "./loader.js";
|
|
12
12
|
export { detectArtifactKind } from "./detection.js";
|
|
13
|
+
// Phase 39c-2b (sub-task b) — add-time artifactPath composition. The
|
|
14
|
+
// directory comes from the lane's `scaffoldDefaults['markdown']`; the
|
|
15
|
+
// on-disk shape comes from the layout; the slug fills the rest. Markdown
|
|
16
|
+
// only — a non-markdown kind throws. Fails loudly when the lane declares
|
|
17
|
+
// no markdown default.
|
|
18
|
+
export { composeAddArtifactPath, layoutToContentRelativePath, parseScaffoldLayout, DEFAULT_SCAFFOLD_LAYOUT, SCAFFOLD_LAYOUTS, } from "./scaffold-path.js";
|
|
13
19
|
export { bootstrapDefaultLaneIfMissing, } from "./bootstrap.js";
|
|
14
20
|
export { resolveEntryTemplate, resolveEntryStrictTemplate, } from "./resolve.js";
|
|
15
21
|
// stageNameToFilesystemToken relocated to ../pipelines/ since it operates
|
package/dist/lanes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lanes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,GAGd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EACL,6BAA6B,GAE9B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB,0EAA0E;AAC1E,wEAAwE;AACxE,yDAAyD;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,8DAA8D;AAC9D,gEAAgE;AAChE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,eAAe,GAWhB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lanes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,GAGd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qEAAqE;AACrE,sEAAsE;AACtE,yEAAyE;AACzE,yEAAyE;AACzE,uBAAuB;AACvB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,GAE9B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB,0EAA0E;AAC1E,wEAAwE;AACxE,yDAAyD;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,8DAA8D;AAC9D,gEAAgE;AAChE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,eAAe,GAWhB,MAAM,uBAAuB,CAAC"}
|
package/dist/lanes/loader.d.ts
CHANGED
|
@@ -54,17 +54,23 @@ export declare function laneConfigPath(projectRoot: string, id: string): string;
|
|
|
54
54
|
*/
|
|
55
55
|
export declare function assertSafeLaneId(projectRoot: string, id: string): void;
|
|
56
56
|
/**
|
|
57
|
-
* Refuse a `
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
57
|
+
* Refuse a `scaffoldDefaults` directory value whose resolved path
|
|
58
|
+
* escapes the project root. A lane's `scaffoldDefaults` map binds an
|
|
59
|
+
* `artifactKind` to the directory where `/deskwork:add` drops a NEW
|
|
60
|
+
* file of that kind; an operator passing
|
|
61
|
+
* `--scaffold-default markdown=../../tmp/foo` (or any other shape that
|
|
62
|
+
* resolves higher in the filesystem) is a path-traversal exposure and
|
|
63
|
+
* is refused at the create / update boundaries. Mirrors
|
|
62
64
|
* `assertSafeLaneId` — same belt-and-suspenders shape.
|
|
63
65
|
*
|
|
66
|
+
* Per the sites→lanes retirement (Phase 39) this replaces the former
|
|
67
|
+
* `assertSafeContentDir` check: a lane no longer carries a
|
|
68
|
+
* `contentDir`, so the boundary check re-homes onto each scaffold dir.
|
|
69
|
+
*
|
|
64
70
|
* Absolute paths equal to or inside the project root are accepted
|
|
65
71
|
* verbatim; relative paths resolve against the project root.
|
|
66
72
|
*/
|
|
67
|
-
export declare function
|
|
73
|
+
export declare function assertSafeScaffoldDir(projectRoot: string, scaffoldDir: string): void;
|
|
68
74
|
/**
|
|
69
75
|
* Load a lane config by id. Refuses missing files with a clear error
|
|
70
76
|
* (no fallback). Cross-validates the referenced pipeline template at
|
|
@@ -79,6 +85,27 @@ export declare function assertSafeContentDir(projectRoot: string, contentDir: st
|
|
|
79
85
|
* not resolve.
|
|
80
86
|
*/
|
|
81
87
|
export declare function loadLaneConfig(id: string, projectRoot: string): LaneConfig;
|
|
88
|
+
/**
|
|
89
|
+
* Load a lane config by id WITHOUT cross-validating its pipeline template
|
|
90
|
+
* (AUDIT-20260604-19). Same read + safe-id + schema + id-match checks as
|
|
91
|
+
* `loadLaneConfig`, but it does NOT require the referenced `pipelineTemplate`
|
|
92
|
+
* to resolve.
|
|
93
|
+
*
|
|
94
|
+
* Use this when a caller needs a lane's STORED fields (e.g. the optional
|
|
95
|
+
* `redirectsPath`) and the pipeline template is orthogonal to that need.
|
|
96
|
+
* `loadLaneConfig` rejects a lane whose pipeline is mid-edit / renamed /
|
|
97
|
+
* deleted — correct when you are about to run that pipeline, but wrong when
|
|
98
|
+
* you only want a published-website field: it would discard a perfectly
|
|
99
|
+
* valid `redirectsPath` because an unrelated field didn't resolve.
|
|
100
|
+
*
|
|
101
|
+
* Throws on: empty id, unsafe id (path-traversal / bad charset), missing
|
|
102
|
+
* file, invalid JSON, schema violation, or id/filename mismatch. Does NOT
|
|
103
|
+
* throw on an unresolvable pipeline template.
|
|
104
|
+
*
|
|
105
|
+
* @param id - The lane id (matches the JSON filename basename).
|
|
106
|
+
* @param projectRoot - Absolute path to the project root.
|
|
107
|
+
*/
|
|
108
|
+
export declare function loadLaneConfigSchemaOnly(id: string, projectRoot: string): LaneConfig;
|
|
82
109
|
/**
|
|
83
110
|
* Options accepted by `listLaneConfigs`.
|
|
84
111
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lanes/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG9E;;GAEG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAgBtE;AAED
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lanes/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG9E;;GAEG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAgBtE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI,CAYN;AAuCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAiC1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAQpF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,MAAM,EAAE,CAmBV"}
|
package/dist/lanes/loader.js
CHANGED
|
@@ -73,25 +73,31 @@ export function assertSafeLaneId(projectRoot, id) {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
|
-
* Refuse a `
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
76
|
+
* Refuse a `scaffoldDefaults` directory value whose resolved path
|
|
77
|
+
* escapes the project root. A lane's `scaffoldDefaults` map binds an
|
|
78
|
+
* `artifactKind` to the directory where `/deskwork:add` drops a NEW
|
|
79
|
+
* file of that kind; an operator passing
|
|
80
|
+
* `--scaffold-default markdown=../../tmp/foo` (or any other shape that
|
|
81
|
+
* resolves higher in the filesystem) is a path-traversal exposure and
|
|
82
|
+
* is refused at the create / update boundaries. Mirrors
|
|
81
83
|
* `assertSafeLaneId` — same belt-and-suspenders shape.
|
|
82
84
|
*
|
|
85
|
+
* Per the sites→lanes retirement (Phase 39) this replaces the former
|
|
86
|
+
* `assertSafeContentDir` check: a lane no longer carries a
|
|
87
|
+
* `contentDir`, so the boundary check re-homes onto each scaffold dir.
|
|
88
|
+
*
|
|
83
89
|
* Absolute paths equal to or inside the project root are accepted
|
|
84
90
|
* verbatim; relative paths resolve against the project root.
|
|
85
91
|
*/
|
|
86
|
-
export function
|
|
92
|
+
export function assertSafeScaffoldDir(projectRoot, scaffoldDir) {
|
|
87
93
|
const projectAbs = resolve(projectRoot);
|
|
88
|
-
const targetAbs = isAbsolute(
|
|
89
|
-
? resolve(
|
|
90
|
-
: resolve(projectAbs,
|
|
94
|
+
const targetAbs = isAbsolute(scaffoldDir)
|
|
95
|
+
? resolve(scaffoldDir)
|
|
96
|
+
: resolve(projectAbs, scaffoldDir);
|
|
91
97
|
const rel = relative(projectAbs, targetAbs);
|
|
92
98
|
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
93
|
-
throw new Error(`Invalid
|
|
94
|
-
+
|
|
99
|
+
throw new Error(`Invalid scaffoldDefaults dir ${JSON.stringify(scaffoldDir)}: resolved `
|
|
100
|
+
+ `path ${targetAbs} must resolve inside the project root ${projectAbs}.`);
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
/**
|
|
@@ -167,6 +173,33 @@ export function loadLaneConfig(id, projectRoot) {
|
|
|
167
173
|
}
|
|
168
174
|
return lane;
|
|
169
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Load a lane config by id WITHOUT cross-validating its pipeline template
|
|
178
|
+
* (AUDIT-20260604-19). Same read + safe-id + schema + id-match checks as
|
|
179
|
+
* `loadLaneConfig`, but it does NOT require the referenced `pipelineTemplate`
|
|
180
|
+
* to resolve.
|
|
181
|
+
*
|
|
182
|
+
* Use this when a caller needs a lane's STORED fields (e.g. the optional
|
|
183
|
+
* `redirectsPath`) and the pipeline template is orthogonal to that need.
|
|
184
|
+
* `loadLaneConfig` rejects a lane whose pipeline is mid-edit / renamed /
|
|
185
|
+
* deleted — correct when you are about to run that pipeline, but wrong when
|
|
186
|
+
* you only want a published-website field: it would discard a perfectly
|
|
187
|
+
* valid `redirectsPath` because an unrelated field didn't resolve.
|
|
188
|
+
*
|
|
189
|
+
* Throws on: empty id, unsafe id (path-traversal / bad charset), missing
|
|
190
|
+
* file, invalid JSON, schema violation, or id/filename mismatch. Does NOT
|
|
191
|
+
* throw on an unresolvable pipeline template.
|
|
192
|
+
*
|
|
193
|
+
* @param id - The lane id (matches the JSON filename basename).
|
|
194
|
+
* @param projectRoot - Absolute path to the project root.
|
|
195
|
+
*/
|
|
196
|
+
export function loadLaneConfigSchemaOnly(id, projectRoot) {
|
|
197
|
+
if (id.trim().length === 0) {
|
|
198
|
+
throw new Error(`loadLaneConfigSchemaOnly requires a non-empty id; received ${JSON.stringify(id)}`);
|
|
199
|
+
}
|
|
200
|
+
assertSafeLaneId(projectRoot, id);
|
|
201
|
+
return readAndValidate(laneConfigPath(projectRoot, id), id);
|
|
202
|
+
}
|
|
170
203
|
/**
|
|
171
204
|
* Enumerate every lane config id under `<projectRoot>/.deskwork/lanes/`.
|
|
172
205
|
* Missing directory is treated as empty — a project with no lanes
|
package/dist/lanes/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/lanes/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAmB;IAC1C,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,EAAU;IAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,EAAU;IAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,kCAAkC;cACrE,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,mBAAmB,SAAS,GAAG;cAClE,+BAA+B,WAAW,GAAG,CAChD,CAAC;IACJ,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/lanes/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,21 @@
|
|
|
11
11
|
* cross-validation `loadLaneConfig` performs on read; doing it at
|
|
12
12
|
* write time keeps the on-disk state consistent.
|
|
13
13
|
*/
|
|
14
|
-
import { type LaneConfig } from '../types.ts';
|
|
14
|
+
import { type ArtifactKind, type LaneConfig } from '../types.ts';
|
|
15
15
|
export interface CreateLaneOptions {
|
|
16
16
|
readonly id: string;
|
|
17
17
|
readonly name: string;
|
|
18
18
|
readonly pipelineTemplate: string;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Optional add-time scaffold directories, keyed by artifact kind. A
|
|
21
|
+
* lane carries NO location of its own (Phase 39 sites→lanes
|
|
22
|
+
* retirement); `scaffoldDefaults` only chooses where `/deskwork:add`
|
|
23
|
+
* drops a NEW file. Partial by construction — a lane defines defaults
|
|
24
|
+
* only for the kinds its pipeline scaffolds.
|
|
25
|
+
*/
|
|
26
|
+
readonly scaffoldDefaults?: Partial<Record<ArtifactKind, string>>;
|
|
27
|
+
/** Optional website host — present only when the lane publishes a site. */
|
|
28
|
+
readonly host?: string;
|
|
20
29
|
}
|
|
21
30
|
export interface CreateLaneResult {
|
|
22
31
|
readonly lane: LaneConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjE,MAAM,WAAW,iBAAiB;IAChC,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,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B"}
|
|
@@ -15,7 +15,7 @@ import { existsSync, mkdirSync } from 'node:fs';
|
|
|
15
15
|
import { dirname } from 'node:path';
|
|
16
16
|
import { appendJournalEvent } from "../../journal/append.js";
|
|
17
17
|
import { loadPipelineTemplate } from "../../pipelines/loader.js";
|
|
18
|
-
import {
|
|
18
|
+
import { assertSafeScaffoldDir, assertSafeLaneId, laneConfigPath, } from "../loader.js";
|
|
19
19
|
import { commitLaneConfig } from "./commit.js";
|
|
20
20
|
/**
|
|
21
21
|
* Write a new lane config. Refuses when:
|
|
@@ -29,7 +29,12 @@ import { commitLaneConfig } from "./commit.js";
|
|
|
29
29
|
*/
|
|
30
30
|
export async function createLane(projectRoot, opts) {
|
|
31
31
|
assertSafeLaneId(projectRoot, opts.id);
|
|
32
|
-
|
|
32
|
+
if (opts.scaffoldDefaults !== undefined) {
|
|
33
|
+
for (const dir of Object.values(opts.scaffoldDefaults)) {
|
|
34
|
+
if (dir !== undefined)
|
|
35
|
+
assertSafeScaffoldDir(projectRoot, dir);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
33
38
|
const target = laneConfigPath(projectRoot, opts.id);
|
|
34
39
|
if (existsSync(target)) {
|
|
35
40
|
throw new Error(`Cannot create lane "${opts.id}": file already exists at ${target}. `
|
|
@@ -50,7 +55,10 @@ export async function createLane(projectRoot, opts) {
|
|
|
50
55
|
id: opts.id,
|
|
51
56
|
name: opts.name,
|
|
52
57
|
pipelineTemplate: opts.pipelineTemplate,
|
|
53
|
-
|
|
58
|
+
...(opts.scaffoldDefaults !== undefined && {
|
|
59
|
+
scaffoldDefaults: opts.scaffoldDefaults,
|
|
60
|
+
}),
|
|
61
|
+
...(opts.host !== undefined && { host: opts.host }),
|
|
54
62
|
};
|
|
55
63
|
mkdirSync(dirname(target), { recursive: true });
|
|
56
64
|
const { lane, path } = commitLaneConfig(projectRoot, opts.id, candidate, 'create');
|
|
@@ -61,7 +69,10 @@ export async function createLane(projectRoot, opts) {
|
|
|
61
69
|
details: {
|
|
62
70
|
name: opts.name,
|
|
63
71
|
pipelineTemplate: opts.pipelineTemplate,
|
|
64
|
-
|
|
72
|
+
...(opts.scaffoldDefaults !== undefined && {
|
|
73
|
+
scaffoldDefaults: opts.scaffoldDefaults,
|
|
74
|
+
}),
|
|
75
|
+
...(opts.host !== undefined && { host: opts.host }),
|
|
65
76
|
},
|
|
66
77
|
});
|
|
67
78
|
return { lane, path };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/lanes/operations/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/lanes/operations/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Phase 6 Task 6.1 (graphical-entries). Wraps `listLaneConfigs` and
|
|
5
5
|
* loads each lane's metadata so the CLI handler can render id + name
|
|
6
|
-
* + pipelineTemplate +
|
|
7
|
-
* calls to `loadLaneConfig` in the CLI layer.
|
|
6
|
+
* + pipelineTemplate + scaffoldDefaults + archived state without
|
|
7
|
+
* making N+1 calls to `loadLaneConfig` in the CLI layer. Per Phase 39
|
|
8
|
+
* (sites→lanes retirement) a lane carries no `contentDir`.
|
|
8
9
|
*
|
|
9
10
|
* The `includeArchived` flag flows through to the loader. The result
|
|
10
11
|
* preserves the loader's alphabetical-by-id ordering; the CLI handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/list.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;CAC9C;AAED,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,gBAAqB,GAC1B,eAAe,CAmBjB"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Phase 6 Task 6.1 (graphical-entries). Wraps `listLaneConfigs` and
|
|
5
5
|
* loads each lane's metadata so the CLI handler can render id + name
|
|
6
|
-
* + pipelineTemplate +
|
|
7
|
-
* calls to `loadLaneConfig` in the CLI layer.
|
|
6
|
+
* + pipelineTemplate + scaffoldDefaults + archived state without
|
|
7
|
+
* making N+1 calls to `loadLaneConfig` in the CLI layer. Per Phase 39
|
|
8
|
+
* (sites→lanes retirement) a lane carries no `contentDir`.
|
|
8
9
|
*
|
|
9
10
|
* The `includeArchived` flag flows through to the loader. The result
|
|
10
11
|
* preserves the loader's alphabetical-by-id ordering; the CLI handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/lanes/operations/list.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/lanes/operations/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+B/D,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,OAAyB,EAAE;IAE3B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE;gBACF,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* lane move — relocate an entry from one lane to another.
|
|
3
3
|
*
|
|
4
|
-
* Phase 6 Task 6.1 (graphical-entries)
|
|
4
|
+
* Phase 6 Task 6.1 (graphical-entries); reshaped by Phase 39
|
|
5
|
+
* (sites→lanes retirement). The move:
|
|
5
6
|
*
|
|
6
7
|
* 1. Resolves the entry's current lane via the sidecar's `lane`
|
|
7
8
|
* field. Migration-window default: an entry without a `lane`
|
|
@@ -9,11 +10,10 @@
|
|
|
9
10
|
* the doctor's lane-back-fill default). The move is refused
|
|
10
11
|
* when the source lane and target lane are the same. Per
|
|
11
12
|
* AUDIT-20260530-58, when the resolved source lane config does
|
|
12
|
-
* NOT exist on disk the function refuses with an
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* contentDir — the migration gap is surfaced.
|
|
13
|
+
* NOT exist on disk the function refuses with an entry-named
|
|
14
|
+
* error (no `lane` field → instruct operator to run
|
|
15
|
+
* `/deskwork:doctor`; explicit `lane` field → name the missing
|
|
16
|
+
* lane id).
|
|
17
17
|
*
|
|
18
18
|
* 2. Resolves the target lane's pipeline template. The target
|
|
19
19
|
* stage MUST be in the union of `linearStages ∪
|
|
@@ -21,31 +21,29 @@
|
|
|
21
21
|
* omits `targetStage`, the move defaults to the target
|
|
22
22
|
* template's FIRST `linearStages` entry.
|
|
23
23
|
*
|
|
24
|
-
* 3.
|
|
25
|
-
* `<sourceContentDir>/<artifactPath>` to
|
|
26
|
-
* `<targetContentDir>/<artifactPath>` (same relative path under
|
|
27
|
-
* the lane's contentDir). When the source file does not exist,
|
|
28
|
-
* the move is refused — the operator must repair the binding
|
|
29
|
-
* before relocating.
|
|
30
|
-
*
|
|
31
|
-
* 4. Relocates the per-entry scrapbook directory at
|
|
32
|
-
* `<sourceContentDir>/<slug>/scrapbook/` (when present) to the
|
|
33
|
-
* target lane's parallel location. A missing scrapbook
|
|
34
|
-
* directory is normal; the move proceeds.
|
|
35
|
-
*
|
|
36
|
-
* 5. Rewrites the sidecar with `lane = target`, `currentStage =
|
|
24
|
+
* 3. Rewrites the sidecar with `lane = target`, `currentStage =
|
|
37
25
|
* targetStage`. Per the PRD's open-question default,
|
|
38
26
|
* `iterationByStage` is preserved verbatim — no stage-name
|
|
39
27
|
* remapping. Old keys from the prior lane template become dead
|
|
40
28
|
* entries that cause no harm (iterate uses `?? 0`).
|
|
41
29
|
*
|
|
42
|
-
*
|
|
43
|
-
* lanes, source / target stages, and the artifact
|
|
30
|
+
* 4. Emits a `lane-move` journal event identifying source / target
|
|
31
|
+
* lanes, source / target stages, and the (unchanged) artifact
|
|
32
|
+
* path for audit.
|
|
33
|
+
*
|
|
34
|
+
* **Phase 39: the move is a METADATA change only.** A lane carries no
|
|
35
|
+
* `contentDir` — location is a property of the ENTRY
|
|
36
|
+
* (`entry.artifactPath`, resolved against the project root), never the
|
|
37
|
+
* lane. So moving an entry between lanes does NOT relocate its artifact
|
|
38
|
+
* file or its per-entry scrapbook; both stay exactly where they are.
|
|
39
|
+
* The lane "spans" whatever directories its entries happen to live in,
|
|
40
|
+
* emergent from the entries. This dissolves the former
|
|
41
|
+
* source/target-`contentDir` relocation (and its cross-device fallback
|
|
42
|
+
* + rollback): there is nothing on disk to move.
|
|
44
43
|
*
|
|
45
|
-
* The
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* move survives a contentDir that points at a separate mount.
|
|
44
|
+
* The source artifact must still EXIST on disk (when the entry carries
|
|
45
|
+
* an `artifactPath`) — moving an entry whose artifact is missing is
|
|
46
|
+
* refused so the operator repairs the binding first.
|
|
49
47
|
*/
|
|
50
48
|
export interface MoveEntryOptions {
|
|
51
49
|
readonly uuid: string;
|
|
@@ -64,6 +62,12 @@ export interface MoveEntryResult {
|
|
|
64
62
|
readonly toLane: string;
|
|
65
63
|
readonly fromStage: string;
|
|
66
64
|
readonly toStage: string;
|
|
65
|
+
/**
|
|
66
|
+
* Absolute artifact path. Phase 39: the move does NOT relocate the
|
|
67
|
+
* artifact, so `from` and `to` are identical — both echo the entry's
|
|
68
|
+
* (unchanged) resolved `artifactPath`. Present only when the entry
|
|
69
|
+
* carries an `artifactPath`.
|
|
70
|
+
*/
|
|
67
71
|
readonly fromArtifactPath?: string;
|
|
68
72
|
readonly toArtifactPath?: string;
|
|
69
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/move.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/lanes/operations/move.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAYH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,eAAe,CAAC,CAiJ1B"}
|