@jevitate/cli 0.17.0 → 0.18.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 (83) hide show
  1. package/dist/author-journey-cli.js +11 -8
  2. package/dist/author-journey-cli.js.map +1 -1
  3. package/dist/bin.js +2754 -1096
  4. package/dist/build-info.generated.js +3 -3
  5. package/dist/catalog-api.d.ts +22 -0
  6. package/dist/catalog-api.js +49 -0
  7. package/dist/catalog-api.js.map +1 -1
  8. package/dist/catalog-cli.js +59 -37
  9. package/dist/catalog-cli.js.map +1 -1
  10. package/dist/cli-shared.d.ts +6 -1
  11. package/dist/cli-shared.js +11 -2
  12. package/dist/cli-shared.js.map +1 -1
  13. package/dist/exit-codes.js +8 -0
  14. package/dist/exit-codes.js.map +1 -1
  15. package/dist/journey-anchor-cli.js +16 -8
  16. package/dist/journey-anchor-cli.js.map +1 -1
  17. package/dist/journey-annotate-cli.js +10 -5
  18. package/dist/journey-annotate-cli.js.map +1 -1
  19. package/dist/journey-api.d.ts +2 -0
  20. package/dist/journey-api.js +14 -0
  21. package/dist/journey-api.js.map +1 -1
  22. package/dist/journey-bundle.d.ts +83 -0
  23. package/dist/journey-bundle.js +252 -0
  24. package/dist/journey-bundle.js.map +1 -0
  25. package/dist/journey-chain.d.ts +14 -1
  26. package/dist/journey-chain.js +139 -8
  27. package/dist/journey-chain.js.map +1 -1
  28. package/dist/journey-cli/anchors.js +11 -6
  29. package/dist/journey-cli/anchors.js.map +1 -1
  30. package/dist/journey-cli/chain.js +12 -5
  31. package/dist/journey-cli/chain.js.map +1 -1
  32. package/dist/journey-cli/find.js +10 -5
  33. package/dist/journey-cli/find.js.map +1 -1
  34. package/dist/journey-cli/lint.js +13 -9
  35. package/dist/journey-cli/lint.js.map +1 -1
  36. package/dist/journey-cli/list.js +10 -5
  37. package/dist/journey-cli/list.js.map +1 -1
  38. package/dist/journey-cli/migrate.js +13 -6
  39. package/dist/journey-cli/migrate.js.map +1 -1
  40. package/dist/journey-cli/promote.js +11 -6
  41. package/dist/journey-cli/promote.js.map +1 -1
  42. package/dist/journey-cli/publish.js +12 -6
  43. package/dist/journey-cli/publish.js.map +1 -1
  44. package/dist/journey-cli/review.js +14 -8
  45. package/dist/journey-cli/review.js.map +1 -1
  46. package/dist/journey-cli/run.js +25 -10
  47. package/dist/journey-cli/run.js.map +1 -1
  48. package/dist/journey-cli/shared.d.ts +19 -1
  49. package/dist/journey-cli/shared.js +28 -0
  50. package/dist/journey-cli/shared.js.map +1 -1
  51. package/dist/journey-cli/verify.js +13 -6
  52. package/dist/journey-cli/verify.js.map +1 -1
  53. package/dist/journey-cli-bundle.d.ts +4 -0
  54. package/dist/journey-cli-bundle.js +70 -0
  55. package/dist/journey-cli-bundle.js.map +1 -0
  56. package/dist/journey-cli-readiness.d.ts +4 -0
  57. package/dist/journey-cli-readiness.js +163 -0
  58. package/dist/journey-cli-readiness.js.map +1 -0
  59. package/dist/journey-cli.js +5 -0
  60. package/dist/journey-cli.js.map +1 -1
  61. package/dist/journey-demo-cli.js +10 -5
  62. package/dist/journey-demo-cli.js.map +1 -1
  63. package/dist/journey-handback.d.ts +62 -0
  64. package/dist/journey-handback.js +150 -0
  65. package/dist/journey-handback.js.map +1 -0
  66. package/dist/journey-link-api.js +1 -1
  67. package/dist/journey-link-api.js.map +1 -1
  68. package/dist/journey-link-cli.js +13 -8
  69. package/dist/journey-link-cli.js.map +1 -1
  70. package/dist/journey-readiness.d.ts +104 -0
  71. package/dist/journey-readiness.js +369 -0
  72. package/dist/journey-readiness.js.map +1 -0
  73. package/dist/mcp-cli-tools.js +57 -21
  74. package/dist/mcp-cli-tools.js.map +1 -1
  75. package/dist/program.js +3 -0
  76. package/dist/program.js.map +1 -1
  77. package/dist/project-layout.d.ts +57 -0
  78. package/dist/project-layout.js +144 -0
  79. package/dist/project-layout.js.map +1 -0
  80. package/dist/project-where.d.ts +4 -0
  81. package/dist/project-where.js +48 -0
  82. package/dist/project-where.js.map +1 -0
  83. package/package.json +7 -7
@@ -0,0 +1,252 @@
1
+ import { existsSync } from "node:fs";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import { clock } from "@jevitate/domain";
5
+ import { loadCatalog } from "./catalog-api.js";
6
+ import { annotationDraftPath, journeyContentHash } from "./journey-annotate-api.js";
7
+ import { reviewJourneyById } from "./journey-review-api.js";
8
+ import { runJourneyReadiness } from "./journey-readiness.js";
9
+ /** #584: a stale manifest — `--check` re-derived a different hash (exit 1). */
10
+ export class BundleStaleError extends Error {
11
+ changed;
12
+ code = "E_BUNDLE_STALE";
13
+ constructor(changed) {
14
+ super(`the bundle is stale: ${changed.join("; ")}`);
15
+ this.changed = changed;
16
+ this.name = "BundleStaleError";
17
+ }
18
+ }
19
+ /** The label every approval state carries (§4): technical readiness, draft, prior approval, stale approval, current authorization. */
20
+ function catalogApprovalLabel(status) {
21
+ switch (status) {
22
+ case "approved":
23
+ return "current authorization";
24
+ case "stale":
25
+ return "stale approval";
26
+ case "draft":
27
+ return "draft";
28
+ default:
29
+ return "unknown";
30
+ }
31
+ }
32
+ /** How a Journey's own promotion reads: not promoted is `draft`, an approval that no longer binds is `stale approval`. */
33
+ function journeyApprovalLabel(entry) {
34
+ const approval = entry.journey.metadata.approval;
35
+ const change = entry.review.changeSinceApproval;
36
+ const stale = (change.kind === "diff" || change.kind === "snapshot-missing") && change.changed;
37
+ if (entry.journey.metadata.promoted && approval !== undefined && !stale)
38
+ return "current authorization";
39
+ if (stale)
40
+ return "stale approval";
41
+ if (approval !== undefined)
42
+ return "prior approval";
43
+ return "draft";
44
+ }
45
+ function handoffFieldLines(fields, indent) {
46
+ return Object.entries(fields).map(([name, decl]) => `${indent}${name}: ${decl.type}${decl.required === false ? " (optional)" : ""}`);
47
+ }
48
+ /** §4: the #582 contracts, by field name and type only (never a value). */
49
+ function contractLines(entry) {
50
+ const outputs = entry.journey.metadata.outputs;
51
+ const inputs = entry.journey.metadata.inputs;
52
+ if (outputs === undefined && inputs === undefined)
53
+ return ["contracts: none declared"];
54
+ const lines = ["contracts:"];
55
+ if (outputs !== undefined)
56
+ lines.push(...outputsLines(outputs));
57
+ if (inputs !== undefined)
58
+ lines.push(...inputsLines(inputs));
59
+ return lines;
60
+ }
61
+ function outputsLines(outputs) {
62
+ const lines = [` outputs: ${outputs.contract}`];
63
+ lines.push(...handoffFieldLines(outputs.fields, " "));
64
+ if (outputs.collection !== undefined)
65
+ lines.push(` collection: ${outputs.collection}`);
66
+ return lines;
67
+ }
68
+ function inputsLines(inputs) {
69
+ const lines = [` inputs: accepts ${inputs.accepts}`, ...handoffFieldLines(inputs.request.fields, " request ")];
70
+ for (const [param, binding] of Object.entries(inputs.bindings)) {
71
+ const source = "record" in binding ? `record.${binding.record}` : "request" in binding ? `request.${binding.request}` : "const" in binding ? `const.${binding.const}` : `secret.${binding.secret}`;
72
+ lines.push(` binding ${param} <- ${source}`);
73
+ }
74
+ return lines;
75
+ }
76
+ /** §4: a person runs these, in order (persona approve, job approve, annotations approve, journey promote). */
77
+ function humanCommands(entry, catalog, draft, ready) {
78
+ const commands = [];
79
+ const personaId = entry.review.catalog?.persona?.id;
80
+ const jobId = entry.review.catalog?.job?.id;
81
+ if (personaId !== undefined) {
82
+ const hash = catalog.personas.find((p) => p.id === personaId)?.contentHash;
83
+ commands.push(`jevitate persona approve ${personaId}${hash === undefined ? "" : ` --reviewed-hash ${hash}`}`);
84
+ }
85
+ if (jobId !== undefined) {
86
+ const hash = catalog.jobs.find((j) => j.id === jobId)?.contentHash;
87
+ commands.push(`jevitate job approve ${jobId}${hash === undefined ? "" : ` --reviewed-hash ${hash}`}`);
88
+ }
89
+ if (draft)
90
+ commands.push(`jevitate journey annotate ${entry.id} --approve`);
91
+ // §4: while any technical blocker remains, promote moves under "After the blockers are fixed" without a hash.
92
+ if (ready)
93
+ commands.push(`jevitate journey promote ${entry.id} --reviewed-hash ${entry.review.contentHash}`);
94
+ return commands;
95
+ }
96
+ function journeySection(entry, receipt) {
97
+ const m = entry.journey.metadata;
98
+ const lines = [`## Journey: ${entry.id}`, ""];
99
+ lines.push(`goal: ${m.goal ?? "(none)"}`);
100
+ const links = entry.review.catalog;
101
+ if (links?.persona !== undefined)
102
+ lines.push(`persona: ${links.persona.id} (${catalogApprovalLabel(links.persona.status)})`);
103
+ if (links?.job !== undefined)
104
+ lines.push(`job: ${links.job.id} (${catalogApprovalLabel(links.job.status)})`);
105
+ lines.push(...contractLines(entry));
106
+ const boundary = m.boundary;
107
+ lines.push(boundary === undefined ? "boundary: none declared" : `boundary: ${boundary.kind}; stop before "${boundary.stopBefore.label}"; next step: ${boundary.nextStep}`);
108
+ lines.push("side effects:");
109
+ if (entry.review.sideEffects.writeRequests.length === 0)
110
+ lines.push(" none");
111
+ for (const w of entry.review.sideEffects.writeRequests)
112
+ lines.push(` ${w.method} ${w.endpoint} (${w.source}${w.step === undefined ? "" : `, step ${w.step}`})`);
113
+ lines.push(`content hash: ${journeyContentHash(entry.journey)}`);
114
+ lines.push(`review hash: ${entry.review.contentHash}`);
115
+ lines.push(`approval: ${journeyApprovalLabel(entry)}`);
116
+ lines.push("steps:");
117
+ for (const step of entry.review.steps)
118
+ lines.push(` ${step.number}. ${step.action} — objective: ${step.objective ?? "(pending)"}`);
119
+ if (entry.review.summary.missingIntent.length > 0) {
120
+ lines.push("pending annotations:");
121
+ for (const item of entry.review.summary.missingIntent)
122
+ lines.push(` - ${item}`);
123
+ }
124
+ lines.push("readiness:");
125
+ for (const check of receipt.checks.filter((c) => c.journey === entry.id))
126
+ lines.push(checkLine(check));
127
+ return lines;
128
+ }
129
+ function checkLine(check) {
130
+ return ` ${check.check}: ${check.state} — ${check.detail}${check.evidence === undefined ? "" : ` (evidence: ${check.evidence})`}`;
131
+ }
132
+ /** §4: the bundle's Markdown. The verdict, blockers and any inconclusive/stale proof come first. */
133
+ export function renderJourneyBundle(receipt, entries, catalog, drafts) {
134
+ const lines = [`# Journey readiness bundle`, "", `verdict: ${receipt.verdict}`, ""];
135
+ const blockers = receipt.blockers;
136
+ if (blockers.length > 0) {
137
+ lines.push("## Blockers", "");
138
+ for (const b of blockers)
139
+ lines.push(`- ${b.journey} ${b.check}: ${b.why} — next: ${b.next}`);
140
+ lines.push("");
141
+ }
142
+ const flagged = receipt.checks.filter((c) => c.state === "inconclusive" || c.state === "stale");
143
+ if (flagged.length > 0) {
144
+ lines.push("## Inconclusive or stale evidence", "");
145
+ for (const c of flagged)
146
+ lines.push(`- ${c.journey} ${c.check}: ${c.state} — ${c.detail}`);
147
+ lines.push("");
148
+ }
149
+ for (const entry of entries) {
150
+ lines.push(...journeySection(entry, receipt), "");
151
+ }
152
+ const ready = receipt.verdict === "technically-ready";
153
+ lines.push("## Human-only commands", "");
154
+ for (const entry of entries) {
155
+ for (const command of humanCommands(entry, catalog, drafts.has(entry.id), ready))
156
+ lines.push(`- ${command}`);
157
+ }
158
+ if (!ready) {
159
+ lines.push("");
160
+ lines.push("## After the blockers are fixed", "");
161
+ for (const entry of entries)
162
+ lines.push(`- jevitate journey promote ${entry.id}`);
163
+ }
164
+ lines.push("");
165
+ return `${lines.join("\n")}\n`;
166
+ }
167
+ function catalogEntries(entries, catalog) {
168
+ const wanted = new Map();
169
+ const add = (kind, id, hash) => {
170
+ if (id === undefined || hash === undefined)
171
+ return;
172
+ wanted.set(`${kind}\u0000${id}`, { kind, id, hash });
173
+ };
174
+ for (const entry of entries) {
175
+ const links = entry.review.catalog;
176
+ add("persona", links?.persona?.id, catalog.personas.find((p) => p.id === links?.persona?.id)?.contentHash);
177
+ add("job", links?.job?.id, catalog.jobs.find((j) => j.id === links?.job?.id)?.contentHash);
178
+ }
179
+ return [...wanted.values()].sort((a, b) => (a.kind === b.kind ? a.id.localeCompare(b.id) : a.kind.localeCompare(b.kind)));
180
+ }
181
+ function defaultAnnotationDraft(journeysDir, id) {
182
+ return existsSync(annotationDraftPath(journeysDir, id));
183
+ }
184
+ /** #584: build the local bundle from a `report`-mode readiness and the review sheet of each Journey. */
185
+ export async function buildJourneyBundle(opts, deps = {}) {
186
+ const readiness = deps.readiness ?? runJourneyReadiness;
187
+ const review = deps.review ?? reviewJourneyById;
188
+ const catalogOf = deps.loadCatalog ?? loadCatalog;
189
+ const draftExists = deps.annotationDraft ?? defaultAnnotationDraft;
190
+ const readinessOpts = {
191
+ id: opts.id,
192
+ ...(opts.with === undefined ? {} : { with: opts.with }),
193
+ mode: "report",
194
+ journeysDir: opts.journeysDir,
195
+ ...(opts.catalogDir === undefined ? {} : { catalogDir: opts.catalogDir }),
196
+ ...(opts.targetsFile === undefined ? {} : { targetsFile: opts.targetsFile }),
197
+ ...(opts.projectDir === undefined ? {} : { projectDir: opts.projectDir }),
198
+ };
199
+ const receiptDeps = deps.cwd === undefined ? {} : { cwd: deps.cwd };
200
+ const receipt = await readiness(readinessOpts, receiptDeps);
201
+ const ids = [opts.id, ...(opts.with === undefined ? [] : [opts.with])];
202
+ const reviewOpts = { strict: true, ...(opts.catalogDir === undefined ? {} : { catalogDir: opts.catalogDir }), ...(opts.targetsFile === undefined ? {} : { targetsFile: opts.targetsFile }) };
203
+ const entries = [];
204
+ for (const id of ids) {
205
+ const loaded = await review(opts.journeysDir, id, reviewOpts);
206
+ entries.push({ id, journey: loaded.journey, review: loaded.review });
207
+ }
208
+ const catalog = await catalogOf(opts.catalogDir === undefined ? null : opts.catalogDir, opts.journeysDir);
209
+ const drafts = new Set(ids.filter((id) => draftExists(opts.journeysDir, id)));
210
+ const out = resolve(opts.out);
211
+ const bundlePath = join(out, "bundle.md");
212
+ const manifestPath = join(out, "manifest.json");
213
+ const manifest = {
214
+ bundleVersion: 1,
215
+ journeys: entries.map((e) => ({ id: e.id, contentHash: journeyContentHash(e.journey), reviewHash: e.review.contentHash })),
216
+ catalog: catalogEntries(entries, catalog),
217
+ verdict: receipt.verdict,
218
+ generatedAt: clock.nowIso(),
219
+ };
220
+ await mkdir(out, { recursive: true });
221
+ await writeFile(bundlePath, renderJourneyBundle(receipt, entries, catalog, drafts), "utf8");
222
+ await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
223
+ return { out, files: [bundlePath, manifestPath], verdict: receipt.verdict };
224
+ }
225
+ /** #584: re-derive every hash the bundle recorded; a moved hash throws `BundleStaleError` (exit 1). */
226
+ export async function checkJourneyBundle(dir, opts, deps = {}) {
227
+ const review = deps.review ?? reviewJourneyById;
228
+ const catalogOf = deps.loadCatalog ?? loadCatalog;
229
+ const manifestPath = join(resolve(dir), "manifest.json");
230
+ const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
231
+ const reviewOpts = { strict: true, ...(opts.catalogDir === undefined ? {} : { catalogDir: opts.catalogDir }), ...(opts.targetsFile === undefined ? {} : { targetsFile: opts.targetsFile }) };
232
+ const changed = [];
233
+ for (const recorded of manifest.journeys) {
234
+ const loaded = await review(opts.journeysDir, recorded.id, reviewOpts);
235
+ if (journeyContentHash(loaded.journey) !== recorded.contentHash)
236
+ changed.push(`journey ${recorded.id} contentHash`);
237
+ if (loaded.review.contentHash !== recorded.reviewHash)
238
+ changed.push(`journey ${recorded.id} reviewHash`);
239
+ }
240
+ if (manifest.catalog.length > 0) {
241
+ const catalog = await catalogOf(opts.catalogDir === undefined ? null : opts.catalogDir, opts.journeysDir);
242
+ for (const recorded of manifest.catalog) {
243
+ const current = recorded.kind === "persona" ? catalog.personas.find((p) => p.id === recorded.id)?.contentHash : catalog.jobs.find((j) => j.id === recorded.id)?.contentHash;
244
+ if (current !== recorded.hash)
245
+ changed.push(`${recorded.kind} ${recorded.id} hash`);
246
+ }
247
+ }
248
+ if (changed.length > 0)
249
+ throw new BundleStaleError(changed);
250
+ return { stale: false };
251
+ }
252
+ //# sourceMappingURL=journey-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-bundle.js","sourceRoot":"","sources":["../src/journey-bundle.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type HandoffRejection } from "@jevitate/journey";
1
2
  import type { JourneyRunResult, SiteGateDeps } from "@jevitate/runtime";
2
3
  import type { BrowserPort, EmulationSpec } from "@jevitate/playwright";
3
4
  import type { BrowserRunOptions } from "./browser-run-options.js";
@@ -10,6 +11,10 @@ import { type RunJourneyProgrammaticallyOptions } from "./journey-api.js";
10
11
  *
11
12
  * The result carries names and outcomes only — never a record field's value (e.g. `sourceText`) or a
12
13
  * request's `replyText`.
14
+ *
15
+ * #582 (docs/contracts/journey-handoff.md §4-§5): when the reply Journey declares `metadata.inputs`,
16
+ * the discovered records and the requests are validated by the pure `@jevitate/journey` handoff
17
+ * validators and each request is matched on `inputs.request.key` and bound by `bindParams`.
13
18
  */
14
19
  /** The runner `journey run` uses; a testing seam so the chain can be driven without a browser. */
15
20
  export type JourneyChainRunner = (options: RunJourneyProgrammaticallyOptions) => Promise<JourneyRunResult>;
@@ -18,7 +23,7 @@ export interface JourneyChainDeps {
18
23
  /** Testing seam — defaults to `runJourneyProgrammatically`. */
19
24
  readonly runJourney?: JourneyChainRunner;
20
25
  }
21
- export type JourneyChainErrorCode = "E_CHAIN_FROM_FAILED" | "E_CHAIN_EMPTY" | "E_CHAIN_REQUEST" | "E_CHAIN_NOT_PROMOTED";
26
+ export type JourneyChainErrorCode = "E_CHAIN_FROM_FAILED" | "E_CHAIN_EMPTY" | "E_CHAIN_REQUEST" | "E_CHAIN_NOT_PROMOTED" | "E_HANDOFF_INCOMPATIBLE";
22
27
  /** A chain-stopping failure (§5 steps 1, 2 and the §4 request contract). */
23
28
  export declare class JourneyChainError extends Error {
24
29
  readonly code: JourneyChainErrorCode;
@@ -38,6 +43,12 @@ export interface ChainRunResult {
38
43
  readonly account: string;
39
44
  readonly outcome: string;
40
45
  readonly reason?: string;
46
+ /** §5 (handoff): the accepted contract (`name@major`). */
47
+ readonly contract?: string;
48
+ /** §5 (handoff): `sha256:` of the record's declared fields. */
49
+ readonly fingerprint?: string;
50
+ /** §5 (handoff): when the producing run finished (ISO 8601 UTC, from the injectable clock). */
51
+ readonly capturedAt?: string;
41
52
  }
42
53
  /** One request with no discovered record (§5 result `unmatched[]`). */
43
54
  export interface ChainUnmatched {
@@ -53,6 +64,8 @@ export interface JourneyChainResult {
53
64
  };
54
65
  readonly runs: readonly ChainRunResult[];
55
66
  readonly unmatched: readonly ChainUnmatched[];
67
+ /** §4/§5 (handoff): records, ambiguous keys and requests a chain refused to run; absent in 0.17.0 mode. */
68
+ readonly rejected?: readonly HandoffRejection[];
56
69
  }
57
70
  /**
58
71
  * §4: parse the JSON Lines file of prepare-only requests. `commentId`, `account` and `replyText` are
@@ -1,4 +1,5 @@
1
- import { FsJourneyStore, JourneyRegistry, journeyParamSchema } from "@jevitate/journey";
1
+ import { FsJourneyStore, JourneyRegistry, bindParams, checkCompatibility, handoffKey, journeyParamSchema, outputKeyFields, readRecords as readHandoffRecords, recordFingerprint, validateRecords, validateRequests, } from "@jevitate/journey";
2
+ import { clock } from "@jevitate/domain";
2
3
  import { runJourneyProgrammatically, UnknownJourneyError } from "./journey-api.js";
3
4
  /** A chain-stopping failure (§5 steps 1, 2 and the §4 request contract). */
4
5
  export class JourneyChainError extends Error {
@@ -104,9 +105,9 @@ function chainParams(record, request, declared) {
104
105
  * so the text-bearing params (the reply and the source comment) are replaced by `<param name>`.
105
106
  */
106
107
  const TEXT_PARAMS = ["replyText", "expected_sourcetext"];
107
- function redactReason(reason, params) {
108
+ function redactReason(reason, params, names = TEXT_PARAMS) {
108
109
  let out = reason;
109
- for (const name of TEXT_PARAMS) {
110
+ for (const name of names) {
110
111
  const value = params[name];
111
112
  if (value === undefined || value === "")
112
113
  continue;
@@ -131,6 +132,117 @@ function sharedRunOptions(opts) {
131
132
  ...(opts.siteGate === undefined ? {} : { siteGate: opts.siteGate }),
132
133
  };
133
134
  }
135
+ /** §4 step 5: parse the request file as JSON Lines objects; field validation is `validateRequests`. */
136
+ function parseRequestObjects(text) {
137
+ const requests = [];
138
+ const lines = text.split(/\r?\n/);
139
+ for (let n = 0; n < lines.length; n++) {
140
+ const line = lines[n]?.trim() ?? "";
141
+ if (line === "")
142
+ continue;
143
+ let parsed;
144
+ try {
145
+ parsed = JSON.parse(line);
146
+ }
147
+ catch {
148
+ throw new JourneyChainError("E_CHAIN_REQUEST", `request line ${n + 1} is not valid JSON`);
149
+ }
150
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
151
+ throw new JourneyChainError("E_CHAIN_REQUEST", `request line ${n + 1} must be a JSON object`);
152
+ }
153
+ requests.push(parsed);
154
+ }
155
+ return requests;
156
+ }
157
+ /**
158
+ * §1: the origins a `url` field may name — the run environment's allowlist, else the producer's
159
+ * recorded site, plus its declared `metadata.allowedOrigins` and the run's `--allow`.
160
+ */
161
+ function handoffOrigins(opts, from) {
162
+ const origins = new Set();
163
+ if (opts.environment !== undefined)
164
+ for (const origin of opts.environment.allowedOrigins)
165
+ origins.add(origin);
166
+ else
167
+ origins.add(from.recording.site);
168
+ for (const origin of from.metadata.allowedOrigins ?? [])
169
+ origins.add(origin);
170
+ for (const origin of opts.allow ?? [])
171
+ origins.add(origin);
172
+ return [...origins];
173
+ }
174
+ /** §4/§5 no-echo rule: a param bound to a `text`/`url`/`path` field never appears in a reason. */
175
+ const REDACTED_FIELD_TYPES = ["text", "url", "path"];
176
+ function textBoundParams(inputs, outputs) {
177
+ const names = [];
178
+ for (const [param, binding] of Object.entries(inputs.bindings)) {
179
+ const type = "record" in binding ? outputs.fields[binding.record]?.type : "request" in binding ? inputs.request.fields[binding.request]?.type : undefined;
180
+ if (type !== undefined && REDACTED_FIELD_TYPES.includes(type))
181
+ names.push(param);
182
+ }
183
+ return names;
184
+ }
185
+ /** The `commentId`/`account` identity the §5 result names, read from a request when declared. */
186
+ function requestIdentity(bag) {
187
+ return {
188
+ commentId: typeof bag["commentId"] === "string" ? bag["commentId"] : "",
189
+ account: typeof bag["account"] === "string" ? bag["account"] : "",
190
+ };
191
+ }
192
+ /**
193
+ * §4/§5 handoff branch: validate the records and requests with the pure `@jevitate/journey`
194
+ * validators, match each valid request on `inputs.request.key` against the outputs key, and run `to`
195
+ * once per match with the params `bindParams` resolves. A request matching an invalid or ambiguous
196
+ * record is rejected (never unmatched, never run).
197
+ */
198
+ async function runHandoffChain(inputs, outputs, fromJourney, fromOutput, requestText, capturedAt, opts, shared, runner) {
199
+ const ctx = { allowedOrigins: handoffOrigins(opts, fromJourney) };
200
+ const records = readHandoffRecords(outputs, fromOutput);
201
+ if (records.length === 0)
202
+ throw new JourneyChainError("E_CHAIN_EMPTY", `the producing Journey '${opts.from}' returned no records`);
203
+ const outputKeys = outputKeyFields(outputs);
204
+ const recordValidation = validateRecords(outputs, records, ctx);
205
+ const byKey = new Map();
206
+ const rejectedByKey = new Map();
207
+ for (const record of recordValidation.valid)
208
+ byKey.set(handoffKey(outputKeys, record), record);
209
+ for (const rejection of recordValidation.rejected)
210
+ if (!rejectedByKey.has(rejection.key))
211
+ rejectedByKey.set(rejection.key, rejection);
212
+ const requestValidation = validateRequests(inputs, parseRequestObjects(requestText), ctx);
213
+ const rejected = [...recordValidation.rejected, ...requestValidation.rejected];
214
+ const redactors = textBoundParams(inputs, outputs);
215
+ const runs = [];
216
+ const unmatched = [];
217
+ for (const request of requestValidation.valid) {
218
+ const key = handoffKey(inputs.request.key, request);
219
+ const identity = requestIdentity(request);
220
+ const record = byKey.get(key);
221
+ if (record === undefined) {
222
+ const rejection = rejectedByKey.get(key);
223
+ if (rejection !== undefined)
224
+ rejected.push({ key, reason: rejection.reason, errors: rejection.errors });
225
+ else
226
+ unmatched.push(identity);
227
+ continue;
228
+ }
229
+ const params = bindParams(inputs, record, request);
230
+ const stamp = { contract: inputs.accepts, fingerprint: recordFingerprint(outputs, record), capturedAt };
231
+ try {
232
+ const result = await runner({ ...shared, id: opts.to, params });
233
+ runs.push({
234
+ ...identity,
235
+ outcome: result.outcome,
236
+ ...stamp,
237
+ ...("reason" in result ? { reason: redactReason(result.reason, params, redactors) } : {}),
238
+ });
239
+ }
240
+ catch (err) {
241
+ runs.push({ ...identity, outcome: "error", ...stamp, reason: redactReason(err instanceof Error ? err.message : String(err), params, redactors) });
242
+ }
243
+ }
244
+ return { from: { journey: opts.from, outcome: "ok", records: records.length }, runs, unmatched, rejected };
245
+ }
134
246
  /**
135
247
  * §5: run `from` once, join each approved request to the record with the same `commentId` and
136
248
  * `account`, and run `to` once per match with §3's params. Unmatched requests are listed and never
@@ -138,27 +250,46 @@ function sharedRunOptions(opts) {
138
250
  * (`E_CHAIN_EMPTY`); a malformed request refuses the whole file (`E_CHAIN_REQUEST`).
139
251
  */
140
252
  export async function runJourneyChain(opts, deps = {}) {
141
- const requests = parseChainRequests(opts.requests);
142
253
  const runner = deps.runJourney ?? runJourneyProgrammatically;
143
254
  const shared = sharedRunOptions(opts);
144
255
  const registry = new JourneyRegistry(new FsJourneyStore(opts.dir));
145
256
  const toJourney = await registry.get(opts.to);
146
257
  if (toJourney === null)
147
258
  throw new UnknownJourneyError(`unknown journey '${opts.to}'`);
259
+ const inputs = toJourney.metadata.inputs;
260
+ // §4: the compatibility check always loads the producing Journey, even when drafts are allowed.
261
+ const needsFrom = inputs !== undefined || opts.requirePromoted === true;
262
+ const fromJourney = needsFrom ? await registry.get(opts.from) : null;
263
+ if (needsFrom && fromJourney === null)
264
+ throw new UnknownJourneyError(`unknown journey '${opts.from}'`);
148
265
  if (opts.requirePromoted === true) {
149
- const fromJourney = await registry.get(opts.from);
150
- if (fromJourney === null)
151
- throw new UnknownJourneyError(`unknown journey '${opts.from}'`);
152
266
  for (const j of [fromJourney, toJourney]) {
153
267
  if (!j.metadata.promoted)
154
268
  throw new JourneyChainError("E_CHAIN_NOT_PROMOTED", `journey '${j.metadata.id}' is not promoted — a chain runs promoted Journeys (journey chain --allow-draft runs drafts on the CLI)`);
155
269
  }
156
270
  }
271
+ let handoff;
272
+ if (inputs !== undefined) {
273
+ const issues = checkCompatibility(fromJourney, toJourney);
274
+ if (issues.length > 0)
275
+ throw new JourneyChainError("E_HANDOFF_INCOMPATIBLE", issues.map((issue) => issue.message).join("; "));
276
+ const outputs = fromJourney.metadata.outputs;
277
+ if (outputs === undefined)
278
+ throw new JourneyChainError("E_HANDOFF_INCOMPATIBLE", `the producing Journey '${opts.from}' declares no outputs`);
279
+ handoff = { inputs, outputs };
280
+ }
281
+ // 0.17.0 parses the fixed-key request file before anything runs; the handoff branch validates the
282
+ // JSON Lines objects after the record set is known (§4 step 5).
283
+ const requests = handoff === undefined ? parseChainRequests(opts.requests) : undefined;
157
284
  const fromResult = await runner({ ...shared, id: opts.from, params: {} });
158
285
  if (fromResult.outcome !== "ok") {
159
286
  const reason = "reason" in fromResult ? fromResult.reason : undefined;
160
287
  throw new JourneyChainError("E_CHAIN_FROM_FAILED", `discover Journey '${opts.from}' did not run ok (${fromResult.outcome})${reason === undefined ? "" : `: ${reason}`}`);
161
288
  }
289
+ if (handoff !== undefined) {
290
+ // §5: `capturedAt` is when the producing run finished, from the injectable clock.
291
+ return runHandoffChain(handoff.inputs, handoff.outputs, fromJourney, fromResult.output, opts.requests, clock.nowIso(), opts, shared, runner);
292
+ }
162
293
  const { count, records } = readRecords(fromResult.output);
163
294
  // §3: the reply Journey's declared params decide the one conditional mapping (`expected_parentid`).
164
295
  const declared = new Set(journeyParamSchema(toJourney).required);
@@ -169,7 +300,7 @@ export async function runJourneyChain(opts, deps = {}) {
169
300
  }
170
301
  const runs = [];
171
302
  const unmatched = [];
172
- for (const request of requests) {
303
+ for (const request of requests ?? []) {
173
304
  const record = byKey.get(recordKey(request.commentId, request.account));
174
305
  if (record === undefined) {
175
306
  unmatched.push({ commentId: request.commentId, account: request.account });
@@ -1 +1 @@
1
- {"version":3,"file":"journey-chain.js","sourceRoot":"","sources":["../src/journey-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journey-chain.js","sourceRoot":"","sources":["../src/journey-chain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,IAAI,kBAAkB,EACjC,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GAQjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAA0C,MAAM,kBAAkB,CAAC;AA0B3H,4EAA4E;AAC5E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAwB;IACrC,YAAY,IAA2B,EAAE,OAAe;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,2GAA2G;AAC3G,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAsC7C,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,GAAG,GAAG,MAAiC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,YAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7I,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAmB,EAAE,CAAC,CAAC;IAC5H,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,GAAG,SAAS,SAAS,OAAO,EAAE,CAAC;AAEjG,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEzG;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAe;IAClC,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrG,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,6DAA6D,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpK,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,IAAY,EAAsB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAe,EAAE,CAAC,CAAC;QACpE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;QAChC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;QAC5B,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QAC9B,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;QAClC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;KAC/B,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAClB,MAAmB,EACnB,OAAqB,EACrB,QAA6B;IAE7B,MAAM,OAAO,GAAiD;QAC5D,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,kBAAkB,EAAE,MAAM,CAAC,SAAS;QACpC,gBAAgB,EAAE,MAAM,CAAC,OAAO;QAChC,mBAAmB,EAAE,MAAM,CAAC,UAAU;QACtC,iBAAiB,EAAE,MAAM,CAAC,QAAQ;KACnC,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,IAAI,EAAE,EAAE,CAAC;QAC5G,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAU,CAAC;AAClE,SAAS,YAAY,CAAC,MAAc,EAAE,MAAwC,EAAE,QAA2B,WAAW;IACpH,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QAClD,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,MAA0B;IACvD,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC3F,CAAC;AAwBD,SAAS,gBAAgB,CAAC,IAA4B;IACpD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjG,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAChG,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAuB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,IAA4B,EAAE,IAAa;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;QACzG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,kGAAkG;AAClG,MAAM,oBAAoB,GAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAClF,SAAS,eAAe,CAAC,MAAyB,EAAE,OAA2B;IAC7E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1J,IAAI,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iGAAiG;AACjG,SAAS,eAAe,CAAC,GAAkB;IACzC,OAAO;QACL,SAAS,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;QACvE,OAAO,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KAClE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,MAAyB,EACzB,OAA2B,EAC3B,WAAoB,EACpB,UAAmB,EACnB,WAAmB,EACnB,UAAkB,EAClB,IAA4B,EAC5B,MAAoE,EACpE,MAA0B;IAE1B,MAAM,GAAG,GAAmB,EAAE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;IAClF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,0BAA0B,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;IAEnI,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC1D,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,QAAQ;QAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAEtI,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAuB,CAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,SAAS,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;;gBACnG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;QACxG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC;gBACR,GAAG,QAAQ;gBACX,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,KAAK;gBACR,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1F,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACpJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC7G,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA4B,EAAE,OAAyB,EAAE;IAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,0BAA0B,CAAC;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,mBAAmB,CAAC,oBAAoB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEzC,gGAAgG;IAChG,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;IACxE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,IAAI,SAAS,IAAI,WAAW,KAAK,IAAI;QAAE,MAAM,IAAI,mBAAmB,CAAC,oBAAoB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACvG,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,CAAC,WAAsB,EAAE,SAAS,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;gBAAE,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,yGAAyG,CAAC,CAAC;QACpN,CAAC;IACH,CAAC;IAED,IAAI,OAA+E,CAAC;IACpF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAsB,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,wBAAwB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,MAAM,OAAO,GAAI,WAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,iBAAiB,CAAC,wBAAwB,EAAE,0BAA0B,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAC7I,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,kGAAkG;IAClG,gEAAgE;IAChE,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,qBAAqB,IAAI,CAAC,IAAI,qBAAqB,UAAU,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,kFAAkF;QAClF,OAAO,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,WAAsB,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1J,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1D,oGAAoG;IACpG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACrI,CAAC;IAED,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACrH,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC;gBACR,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8FAA8F;YAC9F,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC1F,CAAC"}
@@ -1,24 +1,29 @@
1
1
  import { FsJourneyStore, JourneyRegistry, journeyStepCount, listJourneyAnchors } from "@jevitate/journey";
2
2
  import { ok, fail } from "../envelope.js";
3
3
  import { runAnchorSuggest } from "../journey-anchor-cli.js";
4
- import { resolveJourneysDir, emitJson } from "../cli-shared.js";
4
+ import { emitJson } from "../cli-shared.js";
5
+ import { withProjectFlags } from "../project-layout.js";
6
+ import { DEPRECATED_DIR_HELP, journeyLayout } from "./shared.js";
5
7
  /** Registers `jevitate journey anchors`. */
6
8
  export function registerJourneyAnchors(journey, program, deps) {
7
9
  // #293 — the named states worth exploring from (`explore --from-journey <id> --at-step <name>`).
8
- journey
10
+ withProjectFlags(journey
9
11
  .command("anchors <id>")
10
12
  .description("list a Journey's anchors (#293): named steps to branch a mission off with `explore --from-journey <id> --at-step <name>`, and their suggested probes")
11
13
  .option("--suggest", "propose anchors where the recorded flow changes state (a new page, a form that became valid, a completed write), each with the `journey anchor add` command to accept it; advisory, writes nothing (#487)")
12
- .option("--dir <path>", "journeys directory (default: the repo's .jevitate/journeys; outside a repo ~/.jevitate/journeys)")
14
+ .option("--dir <path>", DEPRECATED_DIR_HELP))
13
15
  .option("--json", "emit a JSON envelope")
14
16
  .action(async function (id) {
15
- const { dir, json, suggest } = this.opts();
17
+ const { dir, project, journeysDir, json, suggest } = this.opts();
18
+ const layout = journeyLayout(program, deps, { dir, project, journeysDir });
19
+ if (layout === null)
20
+ return;
16
21
  if (suggest) {
17
- await runAnchorSuggest(program, deps, id, { dir, json });
22
+ await runAnchorSuggest(program, deps, id, { dir: layout.journeysDir, json });
18
23
  return;
19
24
  }
20
25
  try {
21
- const found = await new JourneyRegistry(new FsJourneyStore(resolveJourneysDir(deps, dir))).get(id);
26
+ const found = await new JourneyRegistry(new FsJourneyStore(layout.journeysDir)).get(id);
22
27
  if (found === null) {
23
28
  emitJson(program, fail("E_UNKNOWN_JOURNEY", `unknown journey '${id}'`));
24
29
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"anchors.js","sourceRoot":"","sources":["../../src/journey-cli/anchors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anchors.js","sourceRoot":"","sources":["../../src/journey-cli/anchors.ts"],"names":[],"mappings":"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"}