@deskwork/core 0.11.0 → 0.12.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.
Files changed (40) hide show
  1. package/dist/config.d.ts +7 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +16 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/doctor/migrate.d.ts.map +1 -1
  6. package/dist/doctor/migrate.js +109 -2
  7. package/dist/doctor/migrate.js.map +1 -1
  8. package/dist/doctor/rules/missing-frontmatter-id.d.ts.map +1 -1
  9. package/dist/doctor/rules/missing-frontmatter-id.js +13 -4
  10. package/dist/doctor/rules/missing-frontmatter-id.js.map +1 -1
  11. package/dist/doctor/rules/missing-frontmatter-id.ts +12 -4
  12. package/dist/doctor/validate.d.ts.map +1 -1
  13. package/dist/doctor/validate.js +27 -3
  14. package/dist/doctor/validate.js.map +1 -1
  15. package/dist/entry/approve.d.ts +25 -0
  16. package/dist/entry/approve.d.ts.map +1 -0
  17. package/dist/entry/approve.js +54 -0
  18. package/dist/entry/approve.js.map +1 -0
  19. package/dist/entry/block.d.ts +20 -0
  20. package/dist/entry/block.d.ts.map +1 -0
  21. package/dist/entry/block.js +37 -0
  22. package/dist/entry/block.js.map +1 -0
  23. package/dist/entry/cancel.d.ts +20 -0
  24. package/dist/entry/cancel.d.ts.map +1 -0
  25. package/dist/entry/cancel.js +38 -0
  26. package/dist/entry/cancel.js.map +1 -0
  27. package/dist/entry/induct.d.ts +29 -0
  28. package/dist/entry/induct.d.ts.map +1 -0
  29. package/dist/entry/induct.js +49 -0
  30. package/dist/entry/induct.js.map +1 -0
  31. package/dist/iterate/iterate.d.ts.map +1 -1
  32. package/dist/iterate/iterate.js +26 -5
  33. package/dist/iterate/iterate.js.map +1 -1
  34. package/dist/schema/entry.d.ts +15 -12
  35. package/dist/schema/entry.d.ts.map +1 -1
  36. package/dist/schema/entry.js +6 -0
  37. package/dist/schema/entry.js.map +1 -1
  38. package/dist/schema/journal-events.d.ts +65 -60
  39. package/dist/schema/journal-events.d.ts.map +1 -1
  40. package/package.json +19 -2
@@ -0,0 +1,37 @@
1
+ import { readSidecar } from "../sidecar/read.js";
2
+ import { writeSidecar } from "../sidecar/write.js";
3
+ import { appendJournalEvent } from "../journal/append.js";
4
+ /**
5
+ * Move an entry to Blocked. Records priorStage on the sidecar so a later
6
+ * `inductEntry` can return it to the linear pipeline.
7
+ *
8
+ * Refuses Published / Blocked / Cancelled.
9
+ */
10
+ export async function blockEntry(projectRoot, opts) {
11
+ const sidecar = await readSidecar(projectRoot, opts.uuid);
12
+ const from = sidecar.currentStage;
13
+ if (from === 'Published') {
14
+ throw new Error('Cannot block: Published is terminal.');
15
+ }
16
+ if (from === 'Blocked' || from === 'Cancelled') {
17
+ throw new Error(`Cannot block: entry is already ${from}.`);
18
+ }
19
+ const at = new Date().toISOString();
20
+ const updated = {
21
+ ...sidecar,
22
+ currentStage: 'Blocked',
23
+ priorStage: from,
24
+ updatedAt: at,
25
+ };
26
+ await writeSidecar(projectRoot, updated);
27
+ await appendJournalEvent(projectRoot, {
28
+ kind: 'stage-transition',
29
+ at,
30
+ entryId: sidecar.uuid,
31
+ from,
32
+ to: 'Blocked',
33
+ ...(opts.reason !== undefined && { reason: opts.reason }),
34
+ });
35
+ return { entryId: sidecar.uuid, fromStage: from, toStage: 'Blocked' };
36
+ }
37
+ //# sourceMappingURL=block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/entry/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAe1D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,IAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,OAAO,GAAU;QACrB,GAAG,OAAO;QACV,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,WAAW,EAAE;QACpC,IAAI,EAAE,kBAAkB;QACxB,EAAE;QACF,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI;QACJ,EAAE,EAAE,SAAS;QACb,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Stage } from '../schema/entry.ts';
2
+ interface CancelOptions {
3
+ readonly uuid: string;
4
+ readonly reason?: string;
5
+ }
6
+ interface CancelResult {
7
+ readonly entryId: string;
8
+ readonly fromStage: Stage;
9
+ readonly toStage: 'Cancelled';
10
+ }
11
+ /**
12
+ * Move an entry to Cancelled. Records priorStage on the sidecar so a
13
+ * later `inductEntry` can return it to the linear pipeline if the
14
+ * decision is reversed.
15
+ *
16
+ * Refuses Published / Blocked / Cancelled.
17
+ */
18
+ export declare function cancelEntry(projectRoot: string, opts: CancelOptions): Promise<CancelResult>;
19
+ export {};
20
+ //# sourceMappingURL=cancel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/entry/cancel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,YAAY,CAAC,CA0BvB"}
@@ -0,0 +1,38 @@
1
+ import { readSidecar } from "../sidecar/read.js";
2
+ import { writeSidecar } from "../sidecar/write.js";
3
+ import { appendJournalEvent } from "../journal/append.js";
4
+ /**
5
+ * Move an entry to Cancelled. Records priorStage on the sidecar so a
6
+ * later `inductEntry` can return it to the linear pipeline if the
7
+ * decision is reversed.
8
+ *
9
+ * Refuses Published / Blocked / Cancelled.
10
+ */
11
+ export async function cancelEntry(projectRoot, opts) {
12
+ const sidecar = await readSidecar(projectRoot, opts.uuid);
13
+ const from = sidecar.currentStage;
14
+ if (from === 'Published') {
15
+ throw new Error('Cannot cancel: Published is terminal.');
16
+ }
17
+ if (from === 'Blocked' || from === 'Cancelled') {
18
+ throw new Error(`Cannot cancel: entry is already ${from}.`);
19
+ }
20
+ const at = new Date().toISOString();
21
+ const updated = {
22
+ ...sidecar,
23
+ currentStage: 'Cancelled',
24
+ priorStage: from,
25
+ updatedAt: at,
26
+ };
27
+ await writeSidecar(projectRoot, updated);
28
+ await appendJournalEvent(projectRoot, {
29
+ kind: 'stage-transition',
30
+ at,
31
+ entryId: sidecar.uuid,
32
+ from,
33
+ to: 'Cancelled',
34
+ ...(opts.reason !== undefined && { reason: opts.reason }),
35
+ });
36
+ return { entryId: sidecar.uuid, fromStage: from, toStage: 'Cancelled' };
37
+ }
38
+ //# sourceMappingURL=cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/entry/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAc1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,IAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,OAAO,GAAU;QACrB,GAAG,OAAO;QACV,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,WAAW,EAAE;QACpC,IAAI,EAAE,kBAAkB;QACxB,EAAE;QACF,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI;QACJ,EAAE,EAAE,WAAW;QACf,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Stage } from '../schema/entry.ts';
2
+ interface InductOptions {
3
+ readonly uuid: string;
4
+ /**
5
+ * Linear-pipeline stage to teleport the entry into. Must be one of:
6
+ * Ideas, Planned, Outlining, Drafting, Final, Published. (Blocked /
7
+ * Cancelled are not valid induction targets — use `blockEntry` /
8
+ * `cancelEntry` for those.)
9
+ */
10
+ readonly targetStage: Stage;
11
+ readonly reason?: string;
12
+ }
13
+ interface InductResult {
14
+ readonly entryId: string;
15
+ readonly fromStage: Stage;
16
+ readonly toStage: Stage;
17
+ }
18
+ /**
19
+ * Teleport an entry into a chosen linear-pipeline stage.
20
+ *
21
+ * Primary use: returning a Blocked or Cancelled entry to the pipeline.
22
+ * Also works on linear-pipeline entries when the operator wants to
23
+ * non-linearly skip ahead or back.
24
+ *
25
+ * Refuses targetStage = Blocked / Cancelled (use the dedicated helpers).
26
+ */
27
+ export declare function inductEntry(projectRoot: string, opts: InductOptions): Promise<InductResult>;
28
+ export {};
29
+ //# sourceMappingURL=induct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"induct.d.ts","sourceRoot":"","sources":["../../src/entry/induct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,YAAY,CAAC,CAqCvB"}
@@ -0,0 +1,49 @@
1
+ import { readSidecar } from "../sidecar/read.js";
2
+ import { writeSidecar } from "../sidecar/write.js";
3
+ import { appendJournalEvent } from "../journal/append.js";
4
+ import { isLinearPipelineStage } from "../schema/entry.js";
5
+ /**
6
+ * Teleport an entry into a chosen linear-pipeline stage.
7
+ *
8
+ * Primary use: returning a Blocked or Cancelled entry to the pipeline.
9
+ * Also works on linear-pipeline entries when the operator wants to
10
+ * non-linearly skip ahead or back.
11
+ *
12
+ * Refuses targetStage = Blocked / Cancelled (use the dedicated helpers).
13
+ */
14
+ export async function inductEntry(projectRoot, opts) {
15
+ if (!isLinearPipelineStage(opts.targetStage)) {
16
+ throw new Error(`Cannot induct to ${opts.targetStage}: targetStage must be a linear-pipeline stage. ` +
17
+ `Use blockEntry / cancelEntry for off-pipeline transitions.`);
18
+ }
19
+ const sidecar = await readSidecar(projectRoot, opts.uuid);
20
+ const from = sidecar.currentStage;
21
+ const to = opts.targetStage;
22
+ if (from === to) {
23
+ throw new Error(`Cannot induct: entry is already at ${to}.`);
24
+ }
25
+ const at = new Date().toISOString();
26
+ // Inducting OUT of an off-pipeline stage clears priorStage.
27
+ // Inducting between linear stages doesn't change it (priorStage only
28
+ // tracks the most-recent entry into Blocked/Cancelled).
29
+ const wasOffPipeline = from === 'Blocked' || from === 'Cancelled';
30
+ const { priorStage: _drop, ...rest } = sidecar;
31
+ void _drop;
32
+ const updated = {
33
+ ...rest,
34
+ currentStage: to,
35
+ updatedAt: at,
36
+ ...(wasOffPipeline ? {} : sidecar.priorStage !== undefined ? { priorStage: sidecar.priorStage } : {}),
37
+ };
38
+ await writeSidecar(projectRoot, updated);
39
+ await appendJournalEvent(projectRoot, {
40
+ kind: 'stage-transition',
41
+ at,
42
+ entryId: sidecar.uuid,
43
+ from,
44
+ to,
45
+ ...(opts.reason !== undefined && { reason: opts.reason }),
46
+ });
47
+ return { entryId: sidecar.uuid, fromStage: from, toStage: to };
48
+ }
49
+ //# sourceMappingURL=induct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"induct.js","sourceRoot":"","sources":["../../src/entry/induct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAqB3D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,IAAmB;IAEnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,WAAW,iDAAiD;YACnF,4DAA4D,CAC/D,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEpC,4DAA4D;IAC5D,qEAAqE;IACrE,wDAAwD;IACxD,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,CAAC;IAClE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/C,KAAK,KAAK,CAAC;IACX,MAAM,OAAO,GAAU;QACrB,GAAG,IAAI;QACP,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtG,CAAC;IACF,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,WAAW,EAAE;QACpC,IAAI,EAAE,kBAAkB;QACxB,EAAE;QACF,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI;QACJ,EAAE;QACF,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"iterate.d.ts","sourceRoot":"","sources":["../../src/iterate/iterate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAaD,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6DpG"}
1
+ {"version":3,"file":"iterate.d.ts","sourceRoot":"","sources":["../../src/iterate/iterate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAaD,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAiFpG"}
@@ -3,6 +3,8 @@ import { join } from 'node:path';
3
3
  import { readSidecar } from "../sidecar/read.js";
4
4
  import { writeSidecar } from "../sidecar/write.js";
5
5
  import { appendJournalEvent } from "../journal/append.js";
6
+ import { readJournalEvents } from "../journal/read.js";
7
+ import { getContentDir } from "../config.js";
6
8
  const STAGE_ARTIFACT_PATH = {
7
9
  Ideas: (slug, contentDir) => join(contentDir, slug, 'scrapbook', 'idea.md'),
8
10
  Planned: (slug, contentDir) => join(contentDir, slug, 'scrapbook', 'plan.md'),
@@ -21,13 +23,32 @@ export async function iterateEntry(projectRoot, opts) {
21
23
  if (sidecar.currentStage === 'Blocked' || sidecar.currentStage === 'Cancelled') {
22
24
  throw new Error(`Cannot iterate: entry is ${sidecar.currentStage}; induct it back into the pipeline first.`);
23
25
  }
24
- const pathFn = STAGE_ARTIFACT_PATH[sidecar.currentStage];
25
- if (!pathFn) {
26
- throw new Error(`Cannot iterate at stage ${sidecar.currentStage}: no artifact path defined.`);
26
+ // #140: prefer the explicit artifactPath on the sidecar when present.
27
+ // Fall back to the slug+stage heuristic for entries without one.
28
+ let artifactPath;
29
+ if (sidecar.artifactPath) {
30
+ artifactPath = join(projectRoot, sidecar.artifactPath);
31
+ }
32
+ else {
33
+ const pathFn = STAGE_ARTIFACT_PATH[sidecar.currentStage];
34
+ if (!pathFn) {
35
+ throw new Error(`Cannot iterate at stage ${sidecar.currentStage}: no artifact path defined.`);
36
+ }
37
+ const contentDir = getContentDir(projectRoot);
38
+ artifactPath = pathFn(sidecar.slug, contentDir);
27
39
  }
28
- const contentDir = join(projectRoot, 'docs'); // FIXME: read from .deskwork/config.json
29
- const artifactPath = pathFn(sidecar.slug, contentDir);
30
40
  const markdown = await readFile(artifactPath, 'utf8');
41
+ // Guard: refuse to iterate when on-disk content matches the most recent
42
+ // iteration journal entry for this stage. Prevents no-op revision bumps
43
+ // (the operator forgot to actually edit the file).
44
+ const events = await readJournalEvents(projectRoot, { entryId: sidecar.uuid });
45
+ const lastIteration = events
46
+ .filter((e) => e.kind === 'iteration' && e.stage === sidecar.currentStage)
47
+ .at(-1);
48
+ if (lastIteration && lastIteration.kind === 'iteration' && lastIteration.markdown === markdown) {
49
+ throw new Error(`Cannot iterate: ${artifactPath} content is unchanged since iteration v${lastIteration.version}. ` +
50
+ 'Edit the file before iterating.');
51
+ }
31
52
  const priorVersion = sidecar.iterationByStage[sidecar.currentStage] ?? 0;
32
53
  const newVersion = priorVersion + 1;
33
54
  const at = new Date().toISOString();
@@ -1 +1 @@
1
- {"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../src/iterate/iterate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../src/iterate/iterate.ts"],"names":[],"mappings":"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"}
@@ -17,40 +17,43 @@ export declare const EntrySchema: z.ZodObject<{
17
17
  reviewState: z.ZodOptional<z.ZodEnum<["in-review", "iterating", "approved"]>>;
18
18
  targetVersion: z.ZodOptional<z.ZodString>;
19
19
  datePublished: z.ZodOptional<z.ZodString>;
20
+ artifactPath: z.ZodOptional<z.ZodString>;
20
21
  shortformWorkflows: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
21
22
  createdAt: z.ZodString;
22
23
  updatedAt: z.ZodString;
23
24
  }, "strip", z.ZodTypeAny, {
24
- source: string;
25
+ uuid: string;
25
26
  slug: string;
26
27
  title: string;
27
- uuid: string;
28
28
  keywords: string[];
29
+ source: string;
30
+ currentStage: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled";
31
+ iterationByStage: Partial<Record<"Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled", number>>;
29
32
  createdAt: string;
30
- currentStage: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled";
31
- iterationByStage: Partial<Record<"Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled", number>>;
32
33
  updatedAt: string;
33
34
  description?: string | undefined;
34
- datePublished?: string | undefined;
35
- priorStage?: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled" | undefined;
35
+ priorStage?: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled" | undefined;
36
36
  reviewState?: "in-review" | "iterating" | "approved" | undefined;
37
37
  targetVersion?: string | undefined;
38
+ datePublished?: string | undefined;
39
+ artifactPath?: string | undefined;
38
40
  shortformWorkflows?: Record<string, string> | undefined;
39
41
  }, {
40
- source: string;
42
+ uuid: string;
41
43
  slug: string;
42
44
  title: string;
43
- uuid: string;
44
45
  keywords: string[];
46
+ source: string;
47
+ currentStage: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled";
48
+ iterationByStage: Partial<Record<"Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled", number>>;
45
49
  createdAt: string;
46
- currentStage: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled";
47
- iterationByStage: Partial<Record<"Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled", number>>;
48
50
  updatedAt: string;
49
51
  description?: string | undefined;
50
- datePublished?: string | undefined;
51
- priorStage?: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Published" | "Final" | "Blocked" | "Cancelled" | undefined;
52
+ priorStage?: "Ideas" | "Planned" | "Outlining" | "Drafting" | "Final" | "Published" | "Blocked" | "Cancelled" | undefined;
52
53
  reviewState?: "in-review" | "iterating" | "approved" | undefined;
53
54
  targetVersion?: string | undefined;
55
+ datePublished?: string | undefined;
56
+ artifactPath?: string | undefined;
54
57
  shortformWorkflows?: Record<string, string> | undefined;
55
58
  }>;
56
59
  export type Entry = z.infer<typeof EntrySchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/schema/entry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GACtE,SAAS,GAAG,WAAW,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAKjE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAEpD;AAaD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAEhD;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBtB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/schema/entry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GACtE,SAAS,GAAG,WAAW,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAKjE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAEpD;AAaD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAEhD;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCtB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
@@ -38,6 +38,12 @@ export const EntrySchema = z.object({
38
38
  // Editorial
39
39
  targetVersion: z.string().optional(),
40
40
  datePublished: z.string().datetime().optional(),
41
+ // Explicit on-disk artifact path (relative to contentDir). Set by
42
+ // `add` / `outline` / `induct` at creation time, and by migration's
43
+ // ingest-journal lookup. When absent (legacy entries pre-Phase 30
44
+ // migration data fixes), consumers fall back to the slug+stage
45
+ // heuristic.
46
+ artifactPath: z.string().optional(),
41
47
  // Distribution (deferred — shortform model)
42
48
  shortformWorkflows: z.record(z.string(), z.string()).optional(),
43
49
  // Timestamps
@@ -1 +1 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/schema/entry.ts"],"names":[],"mappings":"AAMA,MAAM,eAAe,GAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AACvH,MAAM,YAAY,GAAqB,CAAC,SAAS,EAAE,WAAW,CAAU,CAAC;AAEzE,MAAM,UAAU,qBAAqB,CAAC,CAAQ;IAC5C,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAQ;IACzC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,SAAS,GAAgC;IAC7C,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,IAAI,EAAS,uBAAuB;IAC3C,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,CAAQ;IAChC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AACtH,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAElB,iBAAiB;IACjB,YAAY,EAAE,SAAS;IACvB,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE;IAChC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACrE,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;IAEvC,YAAY;IACZ,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAE/C,4CAA4C;IAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE/D,aAAa;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/schema/entry.ts"],"names":[],"mappings":"AAMA,MAAM,eAAe,GAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AACvH,MAAM,YAAY,GAAqB,CAAC,SAAS,EAAE,WAAW,CAAU,CAAC;AAEzE,MAAM,UAAU,qBAAqB,CAAC,CAAQ;IAC5C,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAQ;IACzC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,SAAS,GAAgC;IAC7C,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,IAAI,EAAS,uBAAuB;IAC3C,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,CAAQ;IAChC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AACtH,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAElB,iBAAiB;IACjB,YAAY,EAAE,SAAS;IACvB,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE;IAChC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACrE,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;IAEvC,YAAY;IACZ,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAE/C,kEAAkE;IAClE,oEAAoE;IACpE,kEAAkE;IAClE,+DAA+D;IAC/D,aAAa;IACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,4CAA4C;IAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE/D,aAAa;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}