@alex.botez/elaborate 1.0.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/LICENSE +21 -0
- package/README.md +114 -0
- package/dist/durable/index.d.ts +10 -0
- package/dist/durable/index.d.ts.map +1 -0
- package/dist/durable/index.js +9 -0
- package/dist/durable/index.js.map +1 -0
- package/dist/durable/workflow.d.ts +165 -0
- package/dist/durable/workflow.d.ts.map +1 -0
- package/dist/durable/workflow.js +224 -0
- package/dist/durable/workflow.js.map +1 -0
- package/dist/interview/classification.d.ts +16 -0
- package/dist/interview/classification.d.ts.map +1 -0
- package/dist/interview/classification.js +25 -0
- package/dist/interview/classification.js.map +1 -0
- package/dist/interview/composition.d.ts +12 -0
- package/dist/interview/composition.d.ts.map +1 -0
- package/dist/interview/composition.js +19 -0
- package/dist/interview/composition.js.map +1 -0
- package/dist/interview/describe.d.ts +41 -0
- package/dist/interview/describe.d.ts.map +1 -0
- package/dist/interview/describe.js +80 -0
- package/dist/interview/describe.js.map +1 -0
- package/dist/interview/deviation.d.ts +91 -0
- package/dist/interview/deviation.d.ts.map +1 -0
- package/dist/interview/deviation.js +137 -0
- package/dist/interview/deviation.js.map +1 -0
- package/dist/interview/extraction.d.ts +32 -0
- package/dist/interview/extraction.d.ts.map +1 -0
- package/dist/interview/extraction.js +102 -0
- package/dist/interview/extraction.js.map +1 -0
- package/dist/interview/index.d.ts +25 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +22 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/macros.d.ts +91 -0
- package/dist/interview/macros.d.ts.map +1 -0
- package/dist/interview/macros.js +138 -0
- package/dist/interview/macros.js.map +1 -0
- package/dist/interview/preambles.d.ts +18 -0
- package/dist/interview/preambles.d.ts.map +1 -0
- package/dist/interview/preambles.js +93 -0
- package/dist/interview/preambles.js.map +1 -0
- package/dist/interview/progress.d.ts +31 -0
- package/dist/interview/progress.d.ts.map +1 -0
- package/dist/interview/progress.js +51 -0
- package/dist/interview/progress.js.map +1 -0
- package/dist/interview/prompt.d.ts +20 -0
- package/dist/interview/prompt.d.ts.map +1 -0
- package/dist/interview/prompt.js +58 -0
- package/dist/interview/prompt.js.map +1 -0
- package/dist/phases/aggregate/assumptions.d.ts +14 -0
- package/dist/phases/aggregate/assumptions.d.ts.map +1 -0
- package/dist/phases/aggregate/assumptions.js +33 -0
- package/dist/phases/aggregate/assumptions.js.map +1 -0
- package/dist/phases/aggregate/findings.d.ts +10 -0
- package/dist/phases/aggregate/findings.d.ts.map +1 -0
- package/dist/phases/aggregate/findings.js +20 -0
- package/dist/phases/aggregate/findings.js.map +1 -0
- package/dist/phases/aggregate/goals.d.ts +28 -0
- package/dist/phases/aggregate/goals.d.ts.map +1 -0
- package/dist/phases/aggregate/goals.js +74 -0
- package/dist/phases/aggregate/goals.js.map +1 -0
- package/dist/phases/aggregate/index.d.ts +128 -0
- package/dist/phases/aggregate/index.d.ts.map +1 -0
- package/dist/phases/aggregate/index.js +165 -0
- package/dist/phases/aggregate/index.js.map +1 -0
- package/dist/phases/aggregate/pam.d.ts +19 -0
- package/dist/phases/aggregate/pam.d.ts.map +1 -0
- package/dist/phases/aggregate/pam.js +37 -0
- package/dist/phases/aggregate/pam.js.map +1 -0
- package/dist/phases/aggregate/scope.d.ts +24 -0
- package/dist/phases/aggregate/scope.d.ts.map +1 -0
- package/dist/phases/aggregate/scope.js +67 -0
- package/dist/phases/aggregate/scope.js.map +1 -0
- package/dist/phases/aggregate/shared.d.ts +16 -0
- package/dist/phases/aggregate/shared.d.ts.map +1 -0
- package/dist/phases/aggregate/shared.js +26 -0
- package/dist/phases/aggregate/shared.js.map +1 -0
- package/dist/phases/aggregate/stakeholders.d.ts +27 -0
- package/dist/phases/aggregate/stakeholders.d.ts.map +1 -0
- package/dist/phases/aggregate/stakeholders.js +90 -0
- package/dist/phases/aggregate/stakeholders.js.map +1 -0
- package/dist/phases/aggregate/waitingRoom.d.ts +16 -0
- package/dist/phases/aggregate/waitingRoom.d.ts.map +1 -0
- package/dist/phases/aggregate/waitingRoom.js +32 -0
- package/dist/phases/aggregate/waitingRoom.js.map +1 -0
- package/dist/phases/assumptions.d.ts +19 -0
- package/dist/phases/assumptions.d.ts.map +1 -0
- package/dist/phases/assumptions.js +224 -0
- package/dist/phases/assumptions.js.map +1 -0
- package/dist/phases/configuration.d.ts +8 -0
- package/dist/phases/configuration.d.ts.map +1 -0
- package/dist/phases/configuration.js +14 -0
- package/dist/phases/configuration.js.map +1 -0
- package/dist/phases/goals.d.ts +15 -0
- package/dist/phases/goals.d.ts.map +1 -0
- package/dist/phases/goals.js +297 -0
- package/dist/phases/goals.js.map +1 -0
- package/dist/phases/index.d.ts +21 -0
- package/dist/phases/index.d.ts.map +1 -0
- package/dist/phases/index.js +56 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/opening.d.ts +12 -0
- package/dist/phases/opening.d.ts.map +1 -0
- package/dist/phases/opening.js +99 -0
- package/dist/phases/opening.js.map +1 -0
- package/dist/phases/purpose.d.ts +17 -0
- package/dist/phases/purpose.d.ts.map +1 -0
- package/dist/phases/purpose.js +207 -0
- package/dist/phases/purpose.js.map +1 -0
- package/dist/phases/schema.d.ts +861 -0
- package/dist/phases/schema.d.ts.map +1 -0
- package/dist/phases/schema.js +157 -0
- package/dist/phases/schema.js.map +1 -0
- package/dist/phases/scope.d.ts +18 -0
- package/dist/phases/scope.d.ts.map +1 -0
- package/dist/phases/scope.js +440 -0
- package/dist/phases/scope.js.map +1 -0
- package/dist/phases/session/archive.d.ts +19 -0
- package/dist/phases/session/archive.d.ts.map +1 -0
- package/dist/phases/session/archive.js +49 -0
- package/dist/phases/session/archive.js.map +1 -0
- package/dist/phases/session/file.d.ts +31 -0
- package/dist/phases/session/file.d.ts.map +1 -0
- package/dist/phases/session/file.js +113 -0
- package/dist/phases/session/file.js.map +1 -0
- package/dist/phases/session/index.d.ts +8 -0
- package/dist/phases/session/index.d.ts.map +1 -0
- package/dist/phases/session/index.js +8 -0
- package/dist/phases/session/index.js.map +1 -0
- package/dist/phases/session/persistence.d.ts +30 -0
- package/dist/phases/session/persistence.d.ts.map +1 -0
- package/dist/phases/session/persistence.js +91 -0
- package/dist/phases/session/persistence.js.map +1 -0
- package/dist/phases/shared.d.ts +64 -0
- package/dist/phases/shared.d.ts.map +1 -0
- package/dist/phases/shared.js +100 -0
- package/dist/phases/shared.js.map +1 -0
- package/dist/phases/stakeholders.d.ts +17 -0
- package/dist/phases/stakeholders.d.ts.map +1 -0
- package/dist/phases/stakeholders.js +370 -0
- package/dist/phases/stakeholders.js.map +1 -0
- package/dist/phases/validation.d.ts +13 -0
- package/dist/phases/validation.d.ts.map +1 -0
- package/dist/phases/validation.js +130 -0
- package/dist/phases/validation.js.map +1 -0
- package/dist/skill/adapter.d.ts +16 -0
- package/dist/skill/adapter.d.ts.map +1 -0
- package/dist/skill/adapter.js +278 -0
- package/dist/skill/adapter.js.map +1 -0
- package/dist/skill/index.d.ts +12 -0
- package/dist/skill/index.d.ts.map +1 -0
- package/dist/skill/index.js +11 -0
- package/dist/skill/index.js.map +1 -0
- package/dist/skill/log.d.ts +18 -0
- package/dist/skill/log.d.ts.map +1 -0
- package/dist/skill/log.js +53 -0
- package/dist/skill/log.js.map +1 -0
- package/package.json +83 -0
- package/skills/elaborate/SKILL.md +97 -0
- package/skills/elaborate/scripts/elaborate.cjs +589 -0
- package/skills/project-brief/SKILL.md +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/phases/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session archival — move session.yaml aside under various conditions:
|
|
3
|
+
* closed sessions (named by slugified title), corrupted sessions (named by
|
|
4
|
+
* timestamp, bypasses parsing).
|
|
5
|
+
*/
|
|
6
|
+
/** Lowercase, strip non-alphanumeric, collapse to hyphens, trim edges, cap length. */
|
|
7
|
+
export declare function slugify(text: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Archive a corrupt session.yaml by renaming it to `session.yaml.corrupt.<timestamp>`.
|
|
10
|
+
* Does not parse — safe to call when `archiveSession` would throw CorruptedSessionError.
|
|
11
|
+
* Returns the archive filename, or null if the session file doesn't exist.
|
|
12
|
+
*/
|
|
13
|
+
export declare function archiveCorrupted(cwd: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Archive the current session by renaming session.yaml.
|
|
16
|
+
* Returns the archive filename, or null if no session exists.
|
|
17
|
+
*/
|
|
18
|
+
export declare function archiveSession(cwd: string): string | null;
|
|
19
|
+
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/phases/session/archive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWzD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session archival — move session.yaml aside under various conditions:
|
|
3
|
+
* closed sessions (named by slugified title), corrupted sessions (named by
|
|
4
|
+
* timestamp, bypasses parsing).
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
import { getElaborateDir, getSessionPath, loadFile, sessionFileExists } from "./file.js";
|
|
9
|
+
const MAX_SLUG_LENGTH = 80;
|
|
10
|
+
/** Lowercase, strip non-alphanumeric, collapse to hyphens, trim edges, cap length. */
|
|
11
|
+
export function slugify(text) {
|
|
12
|
+
const full = text
|
|
13
|
+
.toLowerCase()
|
|
14
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
15
|
+
.replace(/^-|-$/g, "");
|
|
16
|
+
if (full.length <= MAX_SLUG_LENGTH)
|
|
17
|
+
return full;
|
|
18
|
+
const truncated = full.slice(0, MAX_SLUG_LENGTH);
|
|
19
|
+
return truncated.replace(/-$/, "");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Archive a corrupt session.yaml by renaming it to `session.yaml.corrupt.<timestamp>`.
|
|
23
|
+
* Does not parse — safe to call when `archiveSession` would throw CorruptedSessionError.
|
|
24
|
+
* Returns the archive filename, or null if the session file doesn't exist.
|
|
25
|
+
*/
|
|
26
|
+
export function archiveCorrupted(cwd) {
|
|
27
|
+
if (!sessionFileExists(cwd))
|
|
28
|
+
return null;
|
|
29
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
30
|
+
const name = `session.yaml.corrupt.${ts}`;
|
|
31
|
+
fs.renameSync(getSessionPath(cwd), path.join(getElaborateDir(cwd), name));
|
|
32
|
+
return name;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Archive the current session by renaming session.yaml.
|
|
36
|
+
* Returns the archive filename, or null if no session exists.
|
|
37
|
+
*/
|
|
38
|
+
export function archiveSession(cwd) {
|
|
39
|
+
const file = loadFile(cwd);
|
|
40
|
+
if (!file)
|
|
41
|
+
return null;
|
|
42
|
+
const slug = file.title ? slugify(file.title) : "";
|
|
43
|
+
const name = slug
|
|
44
|
+
? `${slug}_${file.sessionId}.yaml`
|
|
45
|
+
: `${file.sessionId}.yaml`;
|
|
46
|
+
fs.renameSync(getSessionPath(cwd), path.join(getElaborateDir(cwd), name));
|
|
47
|
+
return name;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/phases/session/archive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzF,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,sFAAsF;AACtF,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,IAAI;SACd,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,wBAAwB,EAAE,EAAE,CAAC;IAC1C,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,OAAO;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC;IAE7B,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session file I/O — atomic read/write, validation, tmp-reconciliation, and
|
|
3
|
+
* session-id generation. The persistence adapter layers business logic on top
|
|
4
|
+
* of these primitives.
|
|
5
|
+
*/
|
|
6
|
+
import type { WorkflowState } from "../../durable/index.js";
|
|
7
|
+
export interface SessionFile {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
lastModified: string;
|
|
11
|
+
workflow: WorkflowState | null;
|
|
12
|
+
userConcern?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function getElaborateDir(cwd: string): string;
|
|
16
|
+
export declare function getSessionPath(cwd: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Thrown when `.elaborate/session.yaml` exists but cannot be parsed or validated.
|
|
19
|
+
* Carries the file path so the adapter can offer a recovery affordance
|
|
20
|
+
* (archive the corrupt file and start fresh via `elaborate start --new`).
|
|
21
|
+
*/
|
|
22
|
+
export declare class CorruptedSessionError extends Error {
|
|
23
|
+
readonly file: string;
|
|
24
|
+
constructor(file: string, cause: unknown);
|
|
25
|
+
}
|
|
26
|
+
export declare function loadFile(cwd: string): SessionFile | null;
|
|
27
|
+
export declare function saveFile(cwd: string, data: SessionFile): void;
|
|
28
|
+
export declare function generateSessionId(): string;
|
|
29
|
+
/** Whether a session file exists on disk (no parse). */
|
|
30
|
+
export declare function sessionFileExists(cwd: string): boolean;
|
|
31
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/phases/session/file.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAO5D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AA8DD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAMzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CASxD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAM7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session file I/O — atomic read/write, validation, tmp-reconciliation, and
|
|
3
|
+
* session-id generation. The persistence adapter layers business logic on top
|
|
4
|
+
* of these primitives.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
9
|
+
const ELABORATE_DIR = ".elaborate";
|
|
10
|
+
const SESSION_FILE = "session.yaml";
|
|
11
|
+
const SESSION_TMP = "session.yaml.tmp";
|
|
12
|
+
const VALID_STATUSES = new Set(["running", "suspended", "completed", "failed"]);
|
|
13
|
+
export function getElaborateDir(cwd) {
|
|
14
|
+
return path.join(cwd, ELABORATE_DIR);
|
|
15
|
+
}
|
|
16
|
+
export function getSessionPath(cwd) {
|
|
17
|
+
return path.join(getElaborateDir(cwd), SESSION_FILE);
|
|
18
|
+
}
|
|
19
|
+
function ensureDir(cwd) {
|
|
20
|
+
const dir = getElaborateDir(cwd);
|
|
21
|
+
if (!fs.existsSync(dir))
|
|
22
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
function getTmpPath(cwd) {
|
|
25
|
+
return path.join(getElaborateDir(cwd), SESSION_TMP);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reconcile .tmp left behind by a crash. If the tmp parses as a valid
|
|
29
|
+
* SessionFile, the crash happened after write-complete but before the rename
|
|
30
|
+
* step — promote it (the rename is effectively resumed). Otherwise the tmp
|
|
31
|
+
* is partial or corrupt from an interrupted write — discard.
|
|
32
|
+
*/
|
|
33
|
+
function cleanStaleTmp(cwd) {
|
|
34
|
+
const tmp = getTmpPath(cwd);
|
|
35
|
+
if (!fs.existsSync(tmp))
|
|
36
|
+
return;
|
|
37
|
+
try {
|
|
38
|
+
const parsed = parseYaml(fs.readFileSync(tmp, "utf-8"));
|
|
39
|
+
validateSessionFile(parsed, tmp);
|
|
40
|
+
fs.renameSync(tmp, getSessionPath(cwd));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
fs.unlinkSync(tmp);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Validate that parsed YAML has the expected SessionFile structure. */
|
|
47
|
+
function validateSessionFile(data, filePath) {
|
|
48
|
+
if (data == null || typeof data !== "object")
|
|
49
|
+
throw new Error(`Corrupted session file (not an object): ${filePath}`);
|
|
50
|
+
const obj = data;
|
|
51
|
+
if (typeof obj.sessionId !== "string")
|
|
52
|
+
throw new Error(`Corrupted session file (missing sessionId): ${filePath}`);
|
|
53
|
+
if (obj.workflow != null) {
|
|
54
|
+
if (typeof obj.workflow !== "object")
|
|
55
|
+
throw new Error(`Corrupted session file (workflow not an object): ${filePath}`);
|
|
56
|
+
const wf = obj.workflow;
|
|
57
|
+
if (typeof wf.status !== "string" || !VALID_STATUSES.has(wf.status))
|
|
58
|
+
throw new Error(`Corrupted session file (invalid workflow status): ${filePath}`);
|
|
59
|
+
if (!Array.isArray(wf.entries))
|
|
60
|
+
throw new Error(`Corrupted session file (entries not an array): ${filePath}`);
|
|
61
|
+
for (let i = 0; i < wf.entries.length; i++) {
|
|
62
|
+
const entry = wf.entries[i];
|
|
63
|
+
if (typeof entry?.id !== "string")
|
|
64
|
+
throw new Error(`Corrupted session file (entry ${i} missing id): ${filePath}`);
|
|
65
|
+
if (!("value" in entry) && entry.suspended !== true)
|
|
66
|
+
throw new Error(`Corrupted session file (entry ${i} missing value or suspended): ${filePath}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return data;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Thrown when `.elaborate/session.yaml` exists but cannot be parsed or validated.
|
|
73
|
+
* Carries the file path so the adapter can offer a recovery affordance
|
|
74
|
+
* (archive the corrupt file and start fresh via `elaborate start --new`).
|
|
75
|
+
*/
|
|
76
|
+
export class CorruptedSessionError extends Error {
|
|
77
|
+
file;
|
|
78
|
+
constructor(file, cause) {
|
|
79
|
+
const reason = cause instanceof Error ? cause.message : String(cause);
|
|
80
|
+
super(`Corrupted session file: ${file} — ${reason}`);
|
|
81
|
+
this.name = "CorruptedSessionError";
|
|
82
|
+
this.file = file;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function loadFile(cwd) {
|
|
86
|
+
cleanStaleTmp(cwd);
|
|
87
|
+
const p = getSessionPath(cwd);
|
|
88
|
+
if (!fs.existsSync(p))
|
|
89
|
+
return null;
|
|
90
|
+
try {
|
|
91
|
+
return validateSessionFile(parseYaml(fs.readFileSync(p, "utf-8")), p);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
throw new CorruptedSessionError(p, e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export function saveFile(cwd, data) {
|
|
98
|
+
ensureDir(cwd);
|
|
99
|
+
data.lastModified = new Date().toISOString();
|
|
100
|
+
const tmp = getTmpPath(cwd);
|
|
101
|
+
fs.writeFileSync(tmp, stringifyYaml(data));
|
|
102
|
+
fs.renameSync(tmp, getSessionPath(cwd));
|
|
103
|
+
}
|
|
104
|
+
export function generateSessionId() {
|
|
105
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
106
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
107
|
+
return `sess_${date}_${rand}`;
|
|
108
|
+
}
|
|
109
|
+
/** Whether a session file exists on disk (no parse). */
|
|
110
|
+
export function sessionFileExists(cwd) {
|
|
111
|
+
return fs.existsSync(getSessionPath(cwd));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/phases/session/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session module barrel — public surface of the former `phases/persistence.ts`.
|
|
3
|
+
* Consumers should import from here, not the sibling files.
|
|
4
|
+
*/
|
|
5
|
+
export { CorruptedSessionError } from "./file.js";
|
|
6
|
+
export { createFilePersistence, type SessionPersistence } from "./persistence.js";
|
|
7
|
+
export { archiveSession, archiveCorrupted, slugify } from "./archive.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/phases/session/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session module barrel — public surface of the former `phases/persistence.ts`.
|
|
3
|
+
* Consumers should import from here, not the sibling files.
|
|
4
|
+
*/
|
|
5
|
+
export { CorruptedSessionError } from "./file.js";
|
|
6
|
+
export { createFilePersistence } from "./persistence.js";
|
|
7
|
+
export { archiveSession, archiveCorrupted, slugify } from "./archive.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/phases/session/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAA2B,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session persistence adapter — wraps the durable `StatePersistence` interface
|
|
3
|
+
* with session-metadata accessors (session id, phase, user concern, title).
|
|
4
|
+
*
|
|
5
|
+
* All reads go through `loadFile` on demand; writes go through `saveFile`.
|
|
6
|
+
* Not cached — the single-user CLI hasn't shown a performance need.
|
|
7
|
+
*/
|
|
8
|
+
import type { StatePersistence, WorkflowStatus } from "../../durable/index.js";
|
|
9
|
+
export interface SessionPersistence extends StatePersistence {
|
|
10
|
+
/** Derive current phase from last suspended entry ID prefix */
|
|
11
|
+
phase(): string | null;
|
|
12
|
+
/** Whether a session exists */
|
|
13
|
+
hasSession(): boolean;
|
|
14
|
+
/** Session ID */
|
|
15
|
+
sessionId(): string | null;
|
|
16
|
+
/** Get the ID of the currently suspended call, if any */
|
|
17
|
+
suspendedId(): string | null;
|
|
18
|
+
/** Workflow status (running, suspended, completed, failed) */
|
|
19
|
+
status(): WorkflowStatus | null;
|
|
20
|
+
/** Record the user's concern from validation (absent = endorsed) */
|
|
21
|
+
setUserConcern(concern: string): void;
|
|
22
|
+
/** Retrieve the user's concern, if any */
|
|
23
|
+
userConcern(): string | undefined;
|
|
24
|
+
/** Set a human-readable session title (derived from purpose) */
|
|
25
|
+
setTitle(title: string): void;
|
|
26
|
+
/** Retrieve the session title, if any */
|
|
27
|
+
title(): string | undefined;
|
|
28
|
+
}
|
|
29
|
+
export declare function createFilePersistence(cwd: string): SessionPersistence;
|
|
30
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/phases/session/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG9F,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,+DAA+D;IAC/D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC;IACvB,+BAA+B;IAC/B,UAAU,IAAI,OAAO,CAAC;IACtB,iBAAiB;IACjB,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,yDAAyD;IACzD,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;IAChC,oEAAoE;IACpE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,0CAA0C;IAC1C,WAAW,IAAI,MAAM,GAAG,SAAS,CAAC;IAClC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yCAAyC;IACzC,KAAK,IAAI,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAuFrE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session persistence adapter — wraps the durable `StatePersistence` interface
|
|
3
|
+
* with session-metadata accessors (session id, phase, user concern, title).
|
|
4
|
+
*
|
|
5
|
+
* All reads go through `loadFile` on demand; writes go through `saveFile`.
|
|
6
|
+
* Not cached — the single-user CLI hasn't shown a performance need.
|
|
7
|
+
*/
|
|
8
|
+
import { generateSessionId, loadFile, saveFile, sessionFileExists } from "./file.js";
|
|
9
|
+
export function createFilePersistence(cwd) {
|
|
10
|
+
return {
|
|
11
|
+
load() {
|
|
12
|
+
const file = loadFile(cwd);
|
|
13
|
+
return file?.workflow ?? null;
|
|
14
|
+
},
|
|
15
|
+
save(state) {
|
|
16
|
+
const existing = loadFile(cwd);
|
|
17
|
+
if (existing) {
|
|
18
|
+
existing.workflow = state;
|
|
19
|
+
saveFile(cwd, existing);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
saveFile(cwd, {
|
|
23
|
+
sessionId: generateSessionId(),
|
|
24
|
+
createdAt: new Date().toISOString(),
|
|
25
|
+
lastModified: new Date().toISOString(),
|
|
26
|
+
workflow: state,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
initialize() {
|
|
31
|
+
this.save({ status: "running", entries: [] });
|
|
32
|
+
},
|
|
33
|
+
setStatus(status) {
|
|
34
|
+
const state = this.load();
|
|
35
|
+
if (state) {
|
|
36
|
+
state.status = status;
|
|
37
|
+
this.save(state);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
suspendedId() {
|
|
41
|
+
const state = this.load();
|
|
42
|
+
if (!state)
|
|
43
|
+
return null;
|
|
44
|
+
const last = state.entries[state.entries.length - 1];
|
|
45
|
+
if (last && "suspended" in last)
|
|
46
|
+
return last.id;
|
|
47
|
+
return null;
|
|
48
|
+
},
|
|
49
|
+
phase() {
|
|
50
|
+
const state = this.load();
|
|
51
|
+
if (!state)
|
|
52
|
+
return null;
|
|
53
|
+
if (state.status === "completed")
|
|
54
|
+
return "complete";
|
|
55
|
+
const last = state.entries[state.entries.length - 1];
|
|
56
|
+
if (!last || !("suspended" in last))
|
|
57
|
+
return null;
|
|
58
|
+
return last.id.split(/[:\-]/)[0] || null;
|
|
59
|
+
},
|
|
60
|
+
hasSession() {
|
|
61
|
+
return sessionFileExists(cwd);
|
|
62
|
+
},
|
|
63
|
+
sessionId() {
|
|
64
|
+
return loadFile(cwd)?.sessionId ?? null;
|
|
65
|
+
},
|
|
66
|
+
status() {
|
|
67
|
+
return this.load()?.status ?? null;
|
|
68
|
+
},
|
|
69
|
+
setUserConcern(concern) {
|
|
70
|
+
const file = loadFile(cwd);
|
|
71
|
+
if (file) {
|
|
72
|
+
file.userConcern = concern;
|
|
73
|
+
saveFile(cwd, file);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
userConcern() {
|
|
77
|
+
return loadFile(cwd)?.userConcern;
|
|
78
|
+
},
|
|
79
|
+
setTitle(title) {
|
|
80
|
+
const file = loadFile(cwd);
|
|
81
|
+
if (file) {
|
|
82
|
+
file.title = title;
|
|
83
|
+
saveFile(cwd, file);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
title() {
|
|
87
|
+
return loadFile(cwd)?.title;
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/phases/session/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RE-coupled residual of the former shared.ts — items that reference the
|
|
3
|
+
* `Artifacts` or `Phase` type and therefore stay on the phases side of the
|
|
4
|
+
* layer boundary. Interview-generic content lives in `../interview/`.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { WorkflowContext } from "../durable/index.js";
|
|
8
|
+
import type { Artifacts } from "./schema.js";
|
|
9
|
+
import { type PromptConfirmOptions } from "../interview/index.js";
|
|
10
|
+
import "../interview/index.js";
|
|
11
|
+
/** Interview phase identifier. */
|
|
12
|
+
export type Phase = "opening" | "purpose" | "goals" | "stakeholders" | "scope" | "assumptions" | "validation";
|
|
13
|
+
/** Schema for classifying approval/revision responses across all phases. */
|
|
14
|
+
export declare const ConfirmClassifySchema: z.ZodObject<{
|
|
15
|
+
approved: z.ZodBoolean;
|
|
16
|
+
revisionRequested: z.ZodNullable<z.ZodString>;
|
|
17
|
+
targetId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
approved: boolean;
|
|
20
|
+
revisionRequested: string | null;
|
|
21
|
+
targetId?: string | null | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
approved: boolean;
|
|
24
|
+
revisionRequested: string | null;
|
|
25
|
+
targetId?: string | null | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
declare module "../durable/workflow.js" {
|
|
28
|
+
interface WorkflowContext {
|
|
29
|
+
confirm(response: string, artifacts: Artifacts, phase: Phase, round: number, ri?: number): Promise<{
|
|
30
|
+
approved: boolean;
|
|
31
|
+
revisionRequested: string | null;
|
|
32
|
+
targetId?: string | null;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Phase-side `promptConfirm` wrapper: delegates the prompt-and-classify cycle
|
|
38
|
+
* to `ctx.promptConfirm` in interview/macros.ts, passing the RE-coupled
|
|
39
|
+
* `ctx.confirm` as the classifier thunk. Returned shape matches the phase
|
|
40
|
+
* confirmation contract: `{ response, approved, revisionRequested, targetId? }`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function confirmPhase(ctx: WorkflowContext, prompt: {
|
|
43
|
+
id: string;
|
|
44
|
+
message: string;
|
|
45
|
+
}, artifacts: Artifacts, phase: Phase, round: number, options?: PromptConfirmOptions): Promise<{
|
|
46
|
+
response: string;
|
|
47
|
+
approved: boolean;
|
|
48
|
+
revisionRequested: string | null;
|
|
49
|
+
targetId?: string | null;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Serialize all non-empty artifacts to a compact JSON string for LLM context.
|
|
53
|
+
*
|
|
54
|
+
* `includeWaitingRoom: true` emits the waitingRoom array too — used by seed
|
|
55
|
+
* primitives that mine parked items. Default omits it, so non-seed extractions
|
|
56
|
+
* don't carry unrelated parked content.
|
|
57
|
+
*/
|
|
58
|
+
export declare function buildFullContext(artifacts: Artifacts, options?: {
|
|
59
|
+
includeWaitingRoom?: boolean;
|
|
60
|
+
}): string;
|
|
61
|
+
export { confirmationCloser } from "../interview/index.js";
|
|
62
|
+
/** Build a markdown section: optional heading + non-empty lines. Returns "" if no lines remain. */
|
|
63
|
+
export declare function section(heading: string, lines: string[]): string;
|
|
64
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/phases/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,uBAAuB,CAAC;AAE/B,kCAAkC;AAClC,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;AAE9G,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,eAAe;QACvB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KACvL;CACF;AA2BD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAM9G;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,MAAM,CAgBR;AAiBD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAIhE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RE-coupled residual of the former shared.ts — items that reference the
|
|
3
|
+
* `Artifacts` or `Phase` type and therefore stay on the phases side of the
|
|
4
|
+
* layer boundary. Interview-generic content lives in `../interview/`.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { WorkflowContext } from "../durable/index.js";
|
|
8
|
+
import { PurposeSchema, AdvantageSchema, MeasurementSchema, GoalSchema, StakeholderSchema, InScopeItemSchema, OutOfScopeItemSchema, ConstraintSchema, AssumptionSchema, } from "./schema.js";
|
|
9
|
+
import { classificationPreamble, } from "../interview/index.js";
|
|
10
|
+
// Barrel import for side effects — registers every interview-generic prototype
|
|
11
|
+
// method on WorkflowContext.
|
|
12
|
+
import "../interview/index.js";
|
|
13
|
+
/** Schema for classifying approval/revision responses across all phases. */
|
|
14
|
+
export const ConfirmClassifySchema = z.object({
|
|
15
|
+
approved: z.boolean().describe("true if the stakeholder approved the summary"),
|
|
16
|
+
revisionRequested: z.string().nullable().describe("what they want to change, null if approved"),
|
|
17
|
+
targetId: z.string().nullable().optional().describe("ID of the specific item to revise (e.g. goal_001, sh_002), null if unclear or not applicable"),
|
|
18
|
+
});
|
|
19
|
+
/** Classify whether the respondent approved a phase summary or requested a revision. */
|
|
20
|
+
WorkflowContext.prototype.confirm = async function (response, artifacts, phase, round, ri) {
|
|
21
|
+
const idSuffix = ri !== undefined ? `-r${ri}` : "";
|
|
22
|
+
const hasIds = phase === "goals" || phase === "stakeholders";
|
|
23
|
+
const targetHint = hasIds ? "\nIf revising, set targetId to the ID of the specific item they want to change." : "";
|
|
24
|
+
const baseGuidance = `Classify the response to the ${phase} summary.${targetHint}`;
|
|
25
|
+
const classPre = classificationPreamble();
|
|
26
|
+
const guidance = classPre
|
|
27
|
+
? classPre + "\n" + baseGuidance
|
|
28
|
+
: baseGuidance;
|
|
29
|
+
return this.extract({
|
|
30
|
+
id: `${phase}-confirmation-classification-${round}${idSuffix}`,
|
|
31
|
+
response,
|
|
32
|
+
artifactsContext: buildFullContext(artifacts),
|
|
33
|
+
schema: ConfirmClassifySchema,
|
|
34
|
+
guidance,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Phase-side `promptConfirm` wrapper: delegates the prompt-and-classify cycle
|
|
39
|
+
* to `ctx.promptConfirm` in interview/macros.ts, passing the RE-coupled
|
|
40
|
+
* `ctx.confirm` as the classifier thunk. Returned shape matches the phase
|
|
41
|
+
* confirmation contract: `{ response, approved, revisionRequested, targetId? }`.
|
|
42
|
+
*/
|
|
43
|
+
export function confirmPhase(ctx, prompt, artifacts, phase, round, options) {
|
|
44
|
+
return ctx.promptConfirm(prompt, (response, ri) => ctx.confirm(response, artifacts, phase, round, ri), options);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Serialize all non-empty artifacts to a compact JSON string for LLM context.
|
|
48
|
+
*
|
|
49
|
+
* `includeWaitingRoom: true` emits the waitingRoom array too — used by seed
|
|
50
|
+
* primitives that mine parked items. Default omits it, so non-seed extractions
|
|
51
|
+
* don't carry unrelated parked content.
|
|
52
|
+
*/
|
|
53
|
+
export function buildFullContext(artifacts, options) {
|
|
54
|
+
const ctx = {};
|
|
55
|
+
if (artifacts.purpose)
|
|
56
|
+
ctx.purpose = PurposeSchema.pick({ statement: true }).parse(artifacts.purpose);
|
|
57
|
+
if (artifacts.advantage)
|
|
58
|
+
ctx.advantage = AdvantageSchema.pick({ statement: true }).parse(artifacts.advantage);
|
|
59
|
+
if (artifacts.measurement)
|
|
60
|
+
ctx.measurement = MeasurementSchema.pick({ statement: true }).parse(artifacts.measurement);
|
|
61
|
+
if (artifacts.goals.length > 0)
|
|
62
|
+
ctx.goals = artifacts.goals.map(g => GoalSchema.pick({ id: true, title: true, status: true, rationale: true }).parse(g));
|
|
63
|
+
if (artifacts.stakeholders.length > 0)
|
|
64
|
+
ctx.stakeholders = artifacts.stakeholders.map(s => StakeholderSchema.pick({ id: true, name: true, type: true, role: true, concerns: true, isRespondent: true, status: true }).parse(s));
|
|
65
|
+
if (artifacts.inScope.length > 0)
|
|
66
|
+
ctx.inScope = artifacts.inScope.map(s => InScopeItemSchema.pick({ description: true, relatedGoals: true }).parse(s));
|
|
67
|
+
if (artifacts.outOfScope.length > 0)
|
|
68
|
+
ctx.outOfScope = artifacts.outOfScope.map(s => OutOfScopeItemSchema.pick({ description: true, reason: true, relatedGoals: true }).parse(s));
|
|
69
|
+
if (artifacts.constraints.length > 0)
|
|
70
|
+
ctx.constraints = artifacts.constraints.map(c => ConstraintSchema.pick({ id: true, description: true }).parse(c));
|
|
71
|
+
if (artifacts.assumptions.length > 0)
|
|
72
|
+
ctx.assumptions = artifacts.assumptions.map(a => AssumptionSchema.pick({ id: true, statement: true, type: true, status: true, relatedGoals: true }).parse(a));
|
|
73
|
+
if (artifacts.domainHints.length > 0)
|
|
74
|
+
ctx.domainHints = artifacts.domainHints;
|
|
75
|
+
if (options?.includeWaitingRoom && artifacts.waitingRoom.length > 0) {
|
|
76
|
+
ctx.waitingRoom = artifacts.waitingRoom.map(w => ({ id: w.id, content: w.content }));
|
|
77
|
+
}
|
|
78
|
+
return Object.keys(ctx).length > 0 ? JSON.stringify(ctx) : "(no artifacts captured yet)";
|
|
79
|
+
}
|
|
80
|
+
/** Module-load self-check for the RE-coupled augmentations on WorkflowContext. */
|
|
81
|
+
const REQUIRED_PROTOTYPE_METHODS = [
|
|
82
|
+
"confirm",
|
|
83
|
+
];
|
|
84
|
+
for (const method of REQUIRED_PROTOTYPE_METHODS) {
|
|
85
|
+
if (typeof WorkflowContext.prototype[method] !== "function") {
|
|
86
|
+
throw new Error(`phases/shared.ts self-check failed: WorkflowContext.prototype.${method} is not a function. A prototype assignment was likely dropped.`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Re-export interview-layer items that today's callers reach for through shared.ts.
|
|
90
|
+
// This keeps the current phase-file import shape working until the API sibling child
|
|
91
|
+
// defines per-layer barrels and cross-layer import discipline.
|
|
92
|
+
export { confirmationCloser } from "../interview/index.js";
|
|
93
|
+
/** Build a markdown section: optional heading + non-empty lines. Returns "" if no lines remain. */
|
|
94
|
+
export function section(heading, lines) {
|
|
95
|
+
const filled = lines.filter(Boolean);
|
|
96
|
+
if (filled.length === 0)
|
|
97
|
+
return "";
|
|
98
|
+
return heading ? [heading, ...filled].join("\n") : filled.join("\n");
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/phases/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,aAAa,EAAE,eAAe,EAAE,iBAAiB,EACjD,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EACzD,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,+EAA+E;AAC/E,6BAA6B;AAC7B,OAAO,uBAAuB,CAAC;AAK/B,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC9E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC/F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;CACpJ,CAAC,CAAC;AAQH,wFAAwF;AACxF,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,WACvC,QAAgB,EAChB,SAAoB,EACpB,KAAY,EACZ,KAAa,EACb,EAAW;IAEX,MAAM,QAAQ,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,cAAc,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,EAAE,CAAC;IACnH,MAAM,YAAY,GAAG,gCAAgC,KAAK,YAAY,UAAU,EAAE,CAAC;IACnF,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,YAAY;QAChC,CAAC,CAAC,YAAY,CAAC;IACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QAClB,EAAE,EAAE,GAAG,KAAK,gCAAgC,KAAK,GAAG,QAAQ,EAAE;QAC9D,QAAQ;QACR,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC;QAC7C,MAAM,EAAE,qBAAqB;QAC7B,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAoB,EACpB,MAAuC,EACvC,SAAoB,EACpB,KAAY,EACZ,KAAa,EACb,OAA8B;IAE9B,OAAO,GAAG,CAAC,aAAa,CACtB,MAAM,EACN,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EACpE,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAoB,EACpB,OAA0C;IAE1C,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,SAAS,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtG,IAAI,SAAS,CAAC,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9G,IAAI,SAAS,CAAC,WAAW;QAAE,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtH,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzJ,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/N,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvJ,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjL,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxJ,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpM,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC9E,IAAI,OAAO,EAAE,kBAAkB,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC;AAC3F,CAAC;AAED,kFAAkF;AAClF,MAAM,0BAA0B,GAAG;IACjC,SAAS;CACD,CAAC;AACX,KAAK,MAAM,MAAM,IAAI,0BAA0B,EAAE,CAAC;IAChD,IAAI,OAAQ,eAAe,CAAC,SAAgD,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;QACpG,MAAM,IAAI,KAAK,CACb,iEAAiE,MAAM,gEAAgE,CACxI,CAAC;IACJ,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,qFAAqF;AACrF,+DAA+D;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,mGAAmG;AACnG,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,KAAe;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC"}
|