@jevitate/cli 0.10.0 → 0.11.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 (120) hide show
  1. package/dist/approved-demo.d.ts +86 -0
  2. package/dist/approved-demo.js +184 -0
  3. package/dist/approved-demo.js.map +1 -0
  4. package/dist/bin.js +3371 -1221
  5. package/dist/build-info.generated.js +2 -2
  6. package/dist/campaign-api.d.ts +15 -0
  7. package/dist/campaign-api.js +67 -6
  8. package/dist/campaign-api.js.map +1 -1
  9. package/dist/campaign-cli.js +7 -2
  10. package/dist/campaign-cli.js.map +1 -1
  11. package/dist/campaign-preflight.d.ts +76 -0
  12. package/dist/campaign-preflight.js +117 -0
  13. package/dist/campaign-preflight.js.map +1 -0
  14. package/dist/catalog-bundle-api.d.ts +15 -5
  15. package/dist/catalog-bundle-api.js +117 -14
  16. package/dist/catalog-bundle-api.js.map +1 -1
  17. package/dist/catalog-bundle-findings.d.ts +10 -0
  18. package/dist/catalog-bundle-findings.js +75 -1
  19. package/dist/catalog-bundle-findings.js.map +1 -1
  20. package/dist/catalog-bundle.d.ts +111 -7
  21. package/dist/catalog-bundle.js +208 -9
  22. package/dist/catalog-bundle.js.map +1 -1
  23. package/dist/catalog-cli.js +3 -2
  24. package/dist/catalog-cli.js.map +1 -1
  25. package/dist/check-api.js +20 -2
  26. package/dist/check-api.js.map +1 -1
  27. package/dist/check-cli.d.ts +2 -0
  28. package/dist/check-cli.js +25 -0
  29. package/dist/check-cli.js.map +1 -1
  30. package/dist/check-execute.d.ts +6 -0
  31. package/dist/check-execute.js +1 -0
  32. package/dist/check-execute.js.map +1 -1
  33. package/dist/check-types.d.ts +7 -0
  34. package/dist/check-types.js.map +1 -1
  35. package/dist/cli-output.js +15 -1
  36. package/dist/cli-output.js.map +1 -1
  37. package/dist/cold-start-report.d.ts +32 -0
  38. package/dist/cold-start-report.js +31 -0
  39. package/dist/cold-start-report.js.map +1 -0
  40. package/dist/defect-evidence.js +10 -5
  41. package/dist/defect-evidence.js.map +1 -1
  42. package/dist/demo-aspect-api.d.ts +11 -0
  43. package/dist/demo-aspect-api.js +27 -2
  44. package/dist/demo-aspect-api.js.map +1 -1
  45. package/dist/demo-aspect-cli.js +5 -0
  46. package/dist/demo-aspect-cli.js.map +1 -1
  47. package/dist/demo-capture.d.ts +79 -2
  48. package/dist/demo-capture.js +504 -12
  49. package/dist/demo-capture.js.map +1 -1
  50. package/dist/environments.d.ts +8 -1
  51. package/dist/environments.js +14 -3
  52. package/dist/environments.js.map +1 -1
  53. package/dist/exit-codes.js +1 -0
  54. package/dist/exit-codes.js.map +1 -1
  55. package/dist/explore-adversarial.js +2 -2
  56. package/dist/explore-adversarial.js.map +1 -1
  57. package/dist/explore-shared.d.ts +11 -0
  58. package/dist/explore-shared.js +9 -0
  59. package/dist/explore-shared.js.map +1 -1
  60. package/dist/findings-filing.js +7 -3
  61. package/dist/findings-filing.js.map +1 -1
  62. package/dist/github-issue-filer.js +15 -9
  63. package/dist/github-issue-filer.js.map +1 -1
  64. package/dist/journeeze-api.d.ts +8 -2
  65. package/dist/journeeze-api.js +105 -19
  66. package/dist/journeeze-api.js.map +1 -1
  67. package/dist/journey-anchor-api.d.ts +37 -0
  68. package/dist/journey-anchor-api.js +58 -0
  69. package/dist/journey-anchor-api.js.map +1 -0
  70. package/dist/journey-anchor-cli.d.ts +17 -0
  71. package/dist/journey-anchor-cli.js +104 -0
  72. package/dist/journey-anchor-cli.js.map +1 -0
  73. package/dist/journey-api.d.ts +29 -1
  74. package/dist/journey-api.js +82 -7
  75. package/dist/journey-api.js.map +1 -1
  76. package/dist/journey-cli.js +36 -5
  77. package/dist/journey-cli.js.map +1 -1
  78. package/dist/journey-demo-api.d.ts +29 -0
  79. package/dist/journey-demo-api.js +29 -7
  80. package/dist/journey-demo-api.js.map +1 -1
  81. package/dist/journey-lint-sarif.js +2 -0
  82. package/dist/journey-lint-sarif.js.map +1 -1
  83. package/dist/journey-network-checks.d.ts +11 -0
  84. package/dist/journey-network-checks.js +36 -13
  85. package/dist/journey-network-checks.js.map +1 -1
  86. package/dist/load-api.js +4 -2
  87. package/dist/load-api.js.map +1 -1
  88. package/dist/mcp-api.d.ts +3 -1
  89. package/dist/mcp-api.js +21 -2
  90. package/dist/mcp-api.js.map +1 -1
  91. package/dist/mcp-cli-tools.d.ts +1 -0
  92. package/dist/mcp-cli-tools.js +30 -8
  93. package/dist/mcp-cli-tools.js.map +1 -1
  94. package/dist/openrouter-call.d.ts +23 -10
  95. package/dist/openrouter-call.js +14 -11
  96. package/dist/openrouter-call.js.map +1 -1
  97. package/dist/png-pixels.d.ts +12 -0
  98. package/dist/png-pixels.js +96 -0
  99. package/dist/png-pixels.js.map +1 -0
  100. package/dist/regression-api.js +2 -1
  101. package/dist/regression-api.js.map +1 -1
  102. package/dist/server-log-verify.js +2 -1
  103. package/dist/server-log-verify.js.map +1 -1
  104. package/dist/signal-triage.js +7 -3
  105. package/dist/signal-triage.js.map +1 -1
  106. package/dist/source-run-api.js +2 -2
  107. package/dist/source-run-api.js.map +1 -1
  108. package/dist/verify-fix-api.d.ts +29 -0
  109. package/dist/verify-fix-api.js +43 -2
  110. package/dist/verify-fix-api.js.map +1 -1
  111. package/dist/verify-fix-cli.js +4 -0
  112. package/dist/verify-fix-cli.js.map +1 -1
  113. package/dist/zip-store.d.ts +15 -0
  114. package/dist/zip-store.js +93 -0
  115. package/dist/zip-store.js.map +1 -0
  116. package/package.json +11 -11
  117. package/skills/jevitate-demo/SKILL.md +4 -1
  118. package/skills/jevitate-run-journey/SKILL.md +4 -0
  119. package/skills/jevitate-test-campaign/SKILL.md +13 -0
  120. package/skills/jevitate-verify-fix/SKILL.md +5 -0
@@ -1,12 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
- import { mkdtemp, readFile, rm } from "node:fs/promises";
2
+ import { mkdtemp, readdir, readFile, rm } from "node:fs/promises";
3
3
  import { tmpdir } from "node:os";
4
- import { join, relative, isAbsolute } from "node:path";
4
+ import { join, relative, isAbsolute, sep } from "node:path";
5
+ import { zipStore } from "./zip-store.js";
5
6
  import { envCredentialStore, redactText } from "@jevitate/ai-core";
6
7
  import { exportCatalogBundle } from "./catalog-bundle-api.js";
7
8
  import { loadLocalCredentials } from "./credentials-file.js";
8
9
  import { readCliVersion } from "./version.js";
9
- import { JOURNEEZE_API_PREFIX, JOURNEEZE_KEY_ENV, JOURNEEZE_KEY_RE, JOURNEEZE_URL_ENV, JourneezeError, clockSleep, defaultKeySources, describeError, describeRef, fetchJourneezeHttp, jsonBody, loadConnection, pinnedJourneezeOrigin, resolveKeyRef, runConnect, scrubError, sendPinned, } from "./journeeze-connect.js";
10
+ import { JOURNEEZE_API_PREFIX, JOURNEEZE_KEY_ENV, JOURNEEZE_KEY_RE, JOURNEEZE_URL_ENV, JourneezeError, clockSleep, defaultKeySources, describeError, describeRef, fetchJourneezeHttp, jsonBody, loadConnection, pinnedJourneezeOrigin, resolveKeyRef, runConnect, scrubError, sendPinned, whoami, } from "./journeeze-connect.js";
10
11
  /**
11
12
  * #464 — the Journeeze upload (journeeze-saas `docs/contract/catalog-bundle-upload-v1.md` §9).
12
13
  *
@@ -16,8 +17,10 @@ import { JOURNEEZE_API_PREFIX, JOURNEEZE_KEY_ENV, JOURNEEZE_KEY_RE, JOURNEEZE_UR
16
17
  * `GET /api/upload/v1/whoami`, the person confirms the product, and ONLY the reference is saved
17
18
  * (`~/.jevitate/journeeze.json`, bound to the Journeeze origin). The key is never saved by jevitate.
18
19
  * - `jevitate publish journeeze [--dry-run]` / MCP `publish_to_journeeze`: exports the bundle
19
- * (catalog-bundle-api.ts), `POST /api/upload/v1/bundles` (bundle.json as `application/json`: 0.10
20
- * exports no media) with `Idempotency-Key = sha256-<hex of bundle.json>`, polls `statusUrl` to
20
+ * (catalog-bundle-api.ts), `POST /api/upload/v1/bundles` — bundle.json as `application/json` when
21
+ * it lists no media, else (#471) a ZIP (`application/zip`, contract §4.2) of bundle.json and every
22
+ * listed media file, each re-checked against its listed sha256 and size before it is packed — with
23
+ * `Idempotency-Key = sha256-<hex of bundle.json>`, polls `statusUrl` to
21
24
  * `imported`/`refused`, and reports summary, warnings and errors. The key is resolved by jevitate
22
25
  * itself: `JOURNEEZE_UPLOAD_KEY` (CI; never the plaintext credentials file), else the saved
23
26
  * reference. It is never an argument, never in a result, never in an error — the model never sees
@@ -57,7 +60,7 @@ async function resolvePublishKey(req, deps) {
57
60
  if (!JOURNEEZE_KEY_RE.test(fromEnv)) {
58
61
  throw new JourneezeError("E_JOURNEEZE_KEY_FORMAT", `${JOURNEEZE_KEY_ENV} is not a Journeeze upload key (jzu_ followed by 40 characters)`);
59
62
  }
60
- return { key: fromEnv, origin: pinnedJourneezeOrigin(envUrl || saved?.baseUrl || JOURNEEZE_DEFAULT_URL) };
63
+ return { key: fromEnv, origin: pinnedJourneezeOrigin(envUrl || saved?.baseUrl || JOURNEEZE_DEFAULT_URL), fromSaved: false };
61
64
  }
62
65
  if (saved === undefined) {
63
66
  throw new JourneezeError("E_JOURNEEZE_NOT_CONNECTED", `this project is not connected to Journeeze: a person runs \`jevitate connect journeeze\` at their terminal (or CI sets ${JOURNEEZE_KEY_ENV})`);
@@ -68,7 +71,7 @@ async function resolvePublishKey(req, deps) {
68
71
  }
69
72
  const sources = deps.sources ?? defaultKeySources(env);
70
73
  try {
71
- return { key: await resolveKeyRef(saved.keyRef, sources), origin };
74
+ return { key: await resolveKeyRef(saved.keyRef, sources), origin, fromSaved: true, savedProductName: saved.product.name };
72
75
  }
73
76
  catch (err) {
74
77
  if (err instanceof JourneezeError) {
@@ -77,11 +80,92 @@ async function resolvePublishKey(req, deps) {
77
80
  throw err;
78
81
  }
79
82
  }
83
+ /** Contract §4.2: the upload body limit (`whoami.limits.maxUploadBytes`). */
84
+ const MAX_UPLOAD_BYTES = 256 * 1024 * 1024;
85
+ /** Contract §2: the media paths a bundle may list. */
86
+ const MEDIA_PATH_RE = /^media\/(?:[A-Za-z0-9][A-Za-z0-9._-]{0,63}\/(?:step-[0-9]{2,3}\.(?:png|webp)|demo\.webm|demo\.vtt)|findings\/[0-9a-f]{16}\.(?:png|webp))$/u;
87
+ async function filesUnder(dir, base) {
88
+ let entries;
89
+ try {
90
+ entries = await readdir(dir, { withFileTypes: true });
91
+ }
92
+ catch (err) {
93
+ if (err.code === "ENOENT")
94
+ return [];
95
+ throw err;
96
+ }
97
+ const out = [];
98
+ for (const e of entries) {
99
+ const p = join(dir, e.name);
100
+ if (e.isDirectory())
101
+ out.push(...(await filesUnder(p, base)));
102
+ else
103
+ out.push(relative(base, p).split(sep).join("/"));
104
+ }
105
+ return out;
106
+ }
107
+ /**
108
+ * #471: the ZIP body of a bundle that lists media — every listed file re-read from the export and
109
+ * checked against its listed size and sha256 (listed ⇔ present, nothing else in the folder), packed
110
+ * after bundle.json in listed order.
111
+ */
112
+ async function zipBundle(outDir, bundleJson, files, key) {
113
+ const entries = [{ name: "bundle.json", data: bundleJson }];
114
+ const listed = new Set();
115
+ for (const f of files) {
116
+ const { path, sha256, bytes } = (f ?? {});
117
+ if (typeof path !== "string" || !MEDIA_PATH_RE.test(path) || listed.has(path))
118
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `the bundle lists an unsafe or duplicate media path ${JSON.stringify(path)}`);
119
+ listed.add(path);
120
+ let data;
121
+ try {
122
+ data = await readFile(join(outDir, ...path.split("/")));
123
+ }
124
+ catch {
125
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `the bundle lists ${path}, which the export did not write`);
126
+ }
127
+ if (data.byteLength !== bytes || createHash("sha256").update(data).digest("hex") !== sha256) {
128
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `${path} does not match its listed size and sha256 — refusing to send it`);
129
+ }
130
+ if (data.includes(key))
131
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `${path} contains the upload key — refusing to send it`);
132
+ entries.push({ name: path, data });
133
+ }
134
+ const unlisted = (await filesUnder(join(outDir, "media"), outDir)).filter((p) => !listed.has(p));
135
+ if (unlisted.length > 0)
136
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `the export wrote media the bundle does not list (${unlisted.slice(0, 3).join(", ")}) — refusing to send it`);
137
+ const body = zipStore(entries);
138
+ if (body.byteLength > MAX_UPLOAD_BYTES) {
139
+ throw new JourneezeError("E_JOURNEEZE_BUNDLE", `the bundle with its media is ${body.byteLength} bytes — over Journeeze's ${MAX_UPLOAD_BYTES}-byte upload limit`);
140
+ }
141
+ return new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
142
+ }
143
+ /**
144
+ * The product.name the bundle carries (#477): `--product-name` when given, else the saved
145
+ * connection's product name, else whoami's (the CI key path). The key is verified with whoami on
146
+ * every dry run and whenever the key came from the environment; a verified name that contradicts the
147
+ * named one refuses before exporting.
148
+ */
149
+ async function resolveProductName(req, resolved, deps) {
150
+ const verify = req.dryRun || (!resolved.fromSaved && req.productName === undefined);
151
+ const verified = verify ? await whoami(deps.http ?? fetchJourneezeHttp, resolved.origin, resolved.key) : undefined;
152
+ if (verified !== undefined) {
153
+ const named = req.productName ?? (resolved.fromSaved ? resolved.savedProductName : undefined);
154
+ if (named !== undefined && named !== verified.product.name) {
155
+ throw new JourneezeError("E_JOURNEEZE_PRODUCT_MISMATCH", `this key belongs to Journeeze product '${verified.product.name}' but this publish names '${named}' — pass the right --product-name '${verified.product.name}', or rerun \`jevitate connect journeeze\` if the saved connection is stale`);
156
+ }
157
+ }
158
+ if (req.productName !== undefined)
159
+ return req.productName;
160
+ if (resolved.fromSaved)
161
+ return resolved.savedProductName;
162
+ return verified.product.name;
163
+ }
80
164
  /** Exports the bundle into a temp dir and checks what the contract checks before `202` (§4.2). */
81
- async function buildBundle(req, deps, key) {
165
+ async function buildBundle(req, deps, key, productName) {
82
166
  const outDir = await mkdtemp(join(tmpdir(), "jev-journeeze-"));
83
167
  try {
84
- const exported = await (deps.exportBundle ?? exportCatalogBundle)({ format: "journeeze-bundle", catalogDir: req.catalogDir, journeysDir: req.journeysDir, outDir });
168
+ const exported = await (deps.exportBundle ?? exportCatalogBundle)({ format: "journeeze-bundle", catalogDir: req.catalogDir, journeysDir: req.journeysDir, outDir, productName });
85
169
  const rel = relative(outDir, exported.bundlePath);
86
170
  if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
87
171
  throw new JourneezeError("E_JOURNEEZE_BUNDLE", "the exported bundle is not where it was asked to be written");
@@ -102,11 +186,12 @@ async function buildBundle(req, deps, key) {
102
186
  if (bundle.kind !== "journeeze.catalog-bundle" || bundle.version !== 1) {
103
187
  throw new JourneezeError("E_JOURNEEZE_BUNDLE", 'the exported bundle is not a v1 catalog bundle (kind "journeeze.catalog-bundle", version 1)');
104
188
  }
189
+ const hex = createHash("sha256").update(body).digest("hex");
190
+ // Contract §4.2: bundle.json alone as JSON only with no media; with media, a ZIP.
105
191
  if (Array.isArray(bundle.files) && bundle.files.length > 0) {
106
- throw new JourneezeError("E_JOURNEEZE_BUNDLE", "the bundle lists media files; this version uploads only a media-free bundle (application/json)");
192
+ return { body: await zipBundle(outDir, body, bundle.files, key), idempotencyKey: `sha256-${hex}`, contentType: "application/zip" };
107
193
  }
108
- const hex = createHash("sha256").update(body).digest("hex");
109
- return { body, idempotencyKey: `sha256-${hex}` };
194
+ return { body, idempotencyKey: `sha256-${hex}`, contentType: "application/json" };
110
195
  }
111
196
  finally {
112
197
  await rm(outDir, { recursive: true, force: true });
@@ -176,11 +261,11 @@ function parseStatus(body) {
176
261
  body,
177
262
  };
178
263
  }
179
- async function upload(origin, key, bundle, deps) {
264
+ async function upload(origin, key, bundle, productName, deps) {
180
265
  const http = deps.http ?? fetchJourneezeHttp;
181
266
  const sleep = deps.sleep ?? clockSleep;
182
267
  const auth = `Bearer ${key}`;
183
- const base = { baseUrl: origin, idempotencyKey: bundle.idempotencyKey };
268
+ const base = { baseUrl: origin, productName, idempotencyKey: bundle.idempotencyKey };
184
269
  const digest = `sha-256=:${createHash("sha256").update(bundle.body).digest("base64")}:`;
185
270
  let accepted;
186
271
  let digestRetried = false;
@@ -192,7 +277,7 @@ async function upload(origin, key, bundle, deps) {
192
277
  url: `${origin}${JOURNEEZE_API_PREFIX}/bundles`,
193
278
  headers: {
194
279
  Authorization: auth,
195
- "Content-Type": "application/json",
280
+ "Content-Type": bundle.contentType,
196
281
  "Content-Length": String(bundle.body.byteLength),
197
282
  "Content-Digest": digest,
198
283
  "Idempotency-Key": bundle.idempotencyKey,
@@ -265,10 +350,11 @@ export async function publishToJourneeze(req, deps = {}) {
265
350
  try {
266
351
  const resolved = await resolvePublishKey(req, deps);
267
352
  key = resolved.key;
268
- const bundle = await buildBundle(req, deps, key);
353
+ const productName = await resolveProductName(req, resolved, deps);
354
+ const bundle = await buildBundle(req, deps, key, productName);
269
355
  const result = req.dryRun
270
- ? { dryRun: true, baseUrl: resolved.origin, idempotencyKey: bundle.idempotencyKey, status: "dry-run", warnings: [], errors: [] }
271
- : await upload(resolved.origin, key, bundle, deps);
356
+ ? { dryRun: true, baseUrl: resolved.origin, productName, idempotencyKey: bundle.idempotencyKey, status: "dry-run", warnings: [], errors: [] }
357
+ : await upload(resolved.origin, key, bundle, productName, deps);
272
358
  // Belt and braces: whatever Journeeze echoed, the key never leaves in a result.
273
359
  const text = JSON.stringify(result);
274
360
  return text.includes(key) ? JSON.parse(redactText(text, [key])) : result;
@@ -280,6 +366,6 @@ export async function publishToJourneeze(req, deps = {}) {
280
366
  /** The human rendering (no `--json`). */
281
367
  export function renderPublishJourneeze(r) {
282
368
  const summary = r.summary === undefined ? "" : `${Object.entries(r.summary).map(([k, v]) => ` ${k}: ${v}`).join("\n")}\n`;
283
- return `${r.dryRun ? "dry run: nothing sent" : `upload ${r.uploadId ?? "?"}: ${r.status}`} (${r.idempotencyKey}) → ${r.baseUrl}\n${summary}${r.warnings.map((w) => `warning: ${w}\n`).join("")}${r.errors.map((e) => `error: ${e}\n`).join("")}`;
369
+ return `${r.dryRun ? "dry run: nothing sent" : `upload ${r.uploadId ?? "?"}: ${r.status}`} product '${r.productName}' (${r.idempotencyKey}) → ${r.baseUrl}\n${summary}${r.warnings.map((w) => `warning: ${w}\n`).join("")}${r.errors.map((e) => `error: ${e}\n`).join("")}`;
284
370
  }
285
371
  //# sourceMappingURL=journeeze-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"journeeze-api.js","sourceRoot":"","sources":["../src/journeeze-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journeeze-api.js","sourceRoot":"","sources":["../src/journeeze-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAmE,MAAM,yBAAyB,CAAC;AAC/H,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,GAKP,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAiBjE,gHAAgH;AAChH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAA4B,EAAE,OAAoB,EAAE;IACzF,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAwCD,8FAA8F;AAC9F,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AACnC,iGAAiG;AACjG,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAUlC;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAA4B,EAAE,IAAiB;IAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,IAAI,KAAK,GAA4C,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,EAAE,CAAC,CAAC,gEAAgE;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,cAAc,CAAC,wBAAwB,EAAE,GAAG,iBAAiB,iEAAiE,CAAC,CAAC;QAC5I,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,IAAI,KAAK,EAAE,OAAO,IAAI,qBAAqB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9H,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,cAAc,CACtB,2BAA2B,EAC3B,0HAA0H,iBAAiB,GAAG,CAC/I,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;QAClH,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,uCAAuC,KAAK,CAAC,MAAM,CAAC,MAAM,oFAAoF,CAAC,CAAC;IACjM,CAAC;IACD,MAAM,OAAO,GAAe,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5H,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;QACtI,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AASD,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3C,sDAAsD;AACtD,MAAM,aAAa,GAAG,4IAA4I,CAAC;AAEnK,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY;IACjD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA0B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC7D,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;YACzD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,UAAsB,EAAE,KAAyB,EAAE,GAAW;IACrG,MAAM,OAAO,GAAe,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAA0D,CAAC;QACnG,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,sDAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5M,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,IAAI,kCAAkC,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YAC5F,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,GAAG,IAAI,kEAAkE,CAAC,CAAC;QAC5H,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,GAAG,IAAI,gDAAgD,CAAC,CAAC;QAChI,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,oDAAoD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtL,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACvC,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,gCAAgC,IAAI,CAAC,UAAU,6BAA6B,gBAAgB,oBAAoB,CAAC,CAAC;IACnK,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAAC,GAA4B,EAAE,QAAqB,EAAE,IAAiB;IACtG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,cAAc,CACtB,8BAA8B,EAC9B,0CAA0C,QAAQ,CAAC,OAAO,CAAC,IAAI,6BAA6B,KAAK,sCAAsC,QAAQ,CAAC,OAAO,CAAC,IAAI,6EAA6E,CAC1O,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC;IAC1D,IAAI,QAAQ,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAC,gBAA0B,CAAC;IACnE,OAAQ,QAAyC,CAAC,OAAO,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,kGAAkG;AAClG,KAAK,UAAU,WAAW,CAAC,GAA4B,EAAE,IAAiB,EAAE,GAAW,EAAE,WAAmB;IAC1G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACjL,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,6DAA6D,CAAC,CAAC;QACzK,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,UAAU,GAAG,qBAAqB,EAAE,CAAC;YAC5C,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,IAAI,CAAC,UAAU,6BAA6B,qBAAqB,aAAa,CAAC,CAAC;QACnJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,0DAA0D,CAAC,CAAC;QACnI,IAAI,MAA8D,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,sCAAsC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,6FAA6F,CAAC,CAAC;QAChJ,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,kFAAkF;QAClF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,GAAG,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;QACrI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,GAA0B,EAAE,OAAe;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC;IACpG,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC1C,CAAC;AAED,kEAAkE;AAClE,SAAS,QAAQ,CAAC,GAA0B,EAAE,IAA6B;IACzE,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,yBAAyB,EAAE,qCAAqC,IAAI,mEAAmE,CAAC,CAAC;IAC3L,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,cAAc,CAAC,yBAAyB,EAAE,2DAA2D,IAAI,oCAAoC,CAAC,CAAC;IACrL,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,uBAAuB,EAAE,iCAAiC,IAAI,gEAAgE,CAAC,CAAC;IAClL,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,sBAAsB,EAAE,iCAAiC,IAAI,GAAG,CAAC,CAAC;IACpH,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,cAAc,CAAC,yBAAyB,EAAE,qCAAqC,IAAI,6DAA6D,CAAC,CAAC;IAC5L,OAAO,IAAI,cAAc,CAAC,kBAAkB,EAAE,iCAAiC,IAAI,GAAG,CAAC,CAAC;AAC1F,CAAC;AASD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAElD;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAgF,EAAE,CAAe,EAAE,SAAiB;IACtI,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;gBAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9I,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAU,EAAkC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1K,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7K,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChK,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3F,OAAO;QACL,MAAM,EAAE,KAAK;QACb,GAAG,IAAI;QACP,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,SAAS;QACT,MAAM;QACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,QAAQ,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,oDAAoD,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ;QACnI,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAA6B;IAChD,OAAO;QACL,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI;KACL,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAc,EAAE,GAAW,EAAE,MAAmB,EAAE,WAAmB,EAAE,IAAiB;IAC5G,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,GAAG,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;IACrF,MAAM,MAAM,GAAG,YAAY,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IAExF,IAAI,QAAkC,CAAC;IACvC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,KAAK,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,GAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;gBACnC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,MAAM,GAAG,oBAAoB,UAAU;gBAC/C,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI;oBACnB,cAAc,EAAE,MAAM,CAAC,WAAW;oBAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBAChD,gBAAgB,EAAE,MAAM;oBACxB,iBAAiB,EAAE,MAAM,CAAC,cAAc;oBACxC,oBAAoB,EAAE,YAAY,cAAc,EAAE,EAAE;oBACpD,MAAM,EAAE,kBAAkB;iBAC3B;gBACD,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY;gBAAE,MAAM,GAAG,CAAC;YAC5E,MAAM,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,iDAAiD;YAC5F,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,CAAC;QACD,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC;YAC5D,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5E,aAAa,GAAG,IAAI,CAAC,CAAC,qCAAqC;YAC3D,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,8FAA8F;YAC9F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACzG,CAAC;QACD,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,oBAAoB,YAAY,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtJ,IAAI,UAAU,KAAK,SAAS;QAAE,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,yDAAyD,CAAC,CAAC;IACtI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM;QAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,mCAAmC,SAAS,CAAC,MAAM,4CAA4C,CAAC,CAAC;IAEjL,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,aAAa,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,cAAc,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9D,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;QACzC,IAAI,GAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC7I,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc;gBAAE,MAAM,GAAG,CAAC;YAC7C,SAAS,CAAC,+DAA+D;QAC3E,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3H,CAAC;aAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAA4B,EAAE,OAAoB,EAAE;IAC3F,IAAI,GAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACnB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,MAAM,GAA2B,GAAG,CAAC,MAAM;YAC/C,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7I,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAClE,gFAAgF;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAA4B,CAAC,CAAC,CAAC,MAAM,CAAC;IACvG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,sBAAsB,CAAC,CAAyB;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3H,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,cAAc,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9Q,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { AnchorEditError, type AddAnchorInput, type AnchorLintIssue, type AnchorSuggestion, type StampedAnchor } from "@jevitate/journey";
2
+ /**
3
+ * #487: edit a draft Journey's anchors (`journey anchor add|remove`, `journey lint --fix`) — the API
4
+ * both the CLI and MCP call. Each edit writes the Journey (step ids minted and anchors stamped the
5
+ * way `promote` does) and returns the anchor lint issues that remain.
6
+ */
7
+ /** A PROMOTED Journey's anchors changed: its approval binds to the content hash, so the edit would silently void it. Exit 64. */
8
+ export declare class PromotedJourneyEditError extends Error {
9
+ readonly code = "E_JOURNEY_ANCHOR_ARGS";
10
+ constructor(id: string);
11
+ }
12
+ export interface AnchorEditResult {
13
+ readonly journeyId: string;
14
+ /** The Journey's anchor-rule problems after the edit (warnings; empty when it complies). */
15
+ readonly issues: readonly AnchorLintIssue[];
16
+ }
17
+ export interface AnchorFixResult extends AnchorEditResult {
18
+ /** The anchors given a step id (empty: nothing needed it, nothing was written). */
19
+ readonly stamped: readonly StampedAnchor[];
20
+ }
21
+ /** Adds an anchor (`stepId` written at once). Throws `UnknownJourneyError`, `PromotedJourneyEditError`, `AnchorEditError`. */
22
+ export declare function addJourneyAnchor(dir: string, id: string, input: AddAnchorInput): Promise<AnchorEditResult>;
23
+ /** Removes the named anchor. Throws as `addJourneyAnchor`. */
24
+ export declare function removeJourneyAnchor(dir: string, id: string, name: string): Promise<AnchorEditResult>;
25
+ /** `journey lint --fix`: stamps each number-only anchor with its step's id and writes the Journey. Nothing to stamp: nothing written, even when promoted. */
26
+ export declare function fixJourneyAnchors(dir: string, id: string): Promise<AnchorFixResult>;
27
+ export interface AnchorSuggestResult {
28
+ readonly journeyId: string;
29
+ readonly steps: number;
30
+ /** Advisory only: nothing was written. Each carries the `journey anchor add` command that accepts it. */
31
+ readonly suggestions: readonly (AnchorSuggestion & {
32
+ readonly command: string;
33
+ })[];
34
+ }
35
+ /** `journey anchors --suggest`: anchors worth adding where the recorded flow changes state. Writes nothing. */
36
+ export declare function suggestJourneyAnchors(dir: string, id: string, readRequests?: readonly string[]): Promise<AnchorSuggestResult>;
37
+ export { AnchorEditError };
@@ -0,0 +1,58 @@
1
+ import { AnchorEditError, FsJourneyStore, JourneyRegistry, addAnchor, anchorAddCommand, anchorLintIssues, removeAnchor, suggestAnchors, stampUnstampedAnchors } from "@jevitate/journey";
2
+ import { UnknownJourneyError } from "./journey-api.js";
3
+ /**
4
+ * #487: edit a draft Journey's anchors (`journey anchor add|remove`, `journey lint --fix`) — the API
5
+ * both the CLI and MCP call. Each edit writes the Journey (step ids minted and anchors stamped the
6
+ * way `promote` does) and returns the anchor lint issues that remain.
7
+ */
8
+ /** A PROMOTED Journey's anchors changed: its approval binds to the content hash, so the edit would silently void it. Exit 64. */
9
+ export class PromotedJourneyEditError extends Error {
10
+ code = "E_JOURNEY_ANCHOR_ARGS";
11
+ constructor(id) {
12
+ super(`journey '${id}' is promoted: changing its anchors changes the content hash its approval is bound to (stamping a step id included, since the hash covers it). ` +
13
+ `Edit it as a draft and re-promote — jevitate journey review ${id}, then jevitate journey promote ${id} — a person re-approves the new content`);
14
+ }
15
+ }
16
+ async function load(dir, id) {
17
+ const store = new FsJourneyStore(dir);
18
+ const journey = await new JourneyRegistry(store).get(id);
19
+ if (journey === null)
20
+ throw new UnknownJourneyError(`unknown journey '${id}'`);
21
+ return { store, journey };
22
+ }
23
+ async function edit(dir, id, change) {
24
+ const { store, journey } = await load(dir, id);
25
+ if (journey.metadata.promoted)
26
+ throw new PromotedJourneyEditError(id);
27
+ const next = change(journey);
28
+ await store.put(next);
29
+ const written = (await store.get(id)) ?? next;
30
+ return { journeyId: id, issues: anchorLintIssues(written) };
31
+ }
32
+ /** Adds an anchor (`stepId` written at once). Throws `UnknownJourneyError`, `PromotedJourneyEditError`, `AnchorEditError`. */
33
+ export function addJourneyAnchor(dir, id, input) {
34
+ return edit(dir, id, (j) => addAnchor(j, input));
35
+ }
36
+ /** Removes the named anchor. Throws as `addJourneyAnchor`. */
37
+ export function removeJourneyAnchor(dir, id, name) {
38
+ return edit(dir, id, (j) => removeAnchor(j, name));
39
+ }
40
+ /** `journey lint --fix`: stamps each number-only anchor with its step's id and writes the Journey. Nothing to stamp: nothing written, even when promoted. */
41
+ export async function fixJourneyAnchors(dir, id) {
42
+ const { store, journey } = await load(dir, id);
43
+ const { journey: next, stamped } = stampUnstampedAnchors(journey);
44
+ if (stamped.length === 0)
45
+ return { journeyId: id, issues: anchorLintIssues(journey), stamped };
46
+ if (journey.metadata.promoted)
47
+ throw new PromotedJourneyEditError(id);
48
+ await store.put(next);
49
+ return { journeyId: id, issues: anchorLintIssues((await store.get(id)) ?? next), stamped };
50
+ }
51
+ /** `journey anchors --suggest`: anchors worth adding where the recorded flow changes state. Writes nothing. */
52
+ export async function suggestJourneyAnchors(dir, id, readRequests) {
53
+ const { journey } = await load(dir, id);
54
+ const suggestions = suggestAnchors(journey, { readRequests }).map((s) => ({ ...s, command: anchorAddCommand(id, s) }));
55
+ return { journeyId: id, steps: journey.recording.pages.reduce((n, p) => n + p.steps.length, 0), suggestions };
56
+ }
57
+ export { AnchorEditError };
58
+ //# sourceMappingURL=journey-anchor-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-anchor-api.js","sourceRoot":"","sources":["../src/journey-anchor-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Command } from "commander";
2
+ import { type CliDeps } from "./cli-shared.js";
3
+ /** Maps an edit failure to its envelope: unknown id and refused edits are usage errors (64). */
4
+ export declare function anchorEditFailure(program: Command, err: unknown): void;
5
+ /**
6
+ * #487 — `jevitate journey anchor add|remove`: edit a draft Journey's anchors without hand-editing
7
+ * `metadata.anchors`. The step id is written at once; the anchor lint issues that remain are printed.
8
+ */
9
+ export declare function registerJourneyAnchorCommands(journey: Command, program: Command, deps: CliDeps): void;
10
+ /**
11
+ * #487 — `journey anchors <id> --suggest`: advisory anchor proposals (a new page, a form that became
12
+ * valid, a completed write), each with the `journey anchor add` command that accepts it. Writes nothing.
13
+ */
14
+ export declare function runAnchorSuggest(program: Command, deps: CliDeps, id: string, opts: {
15
+ dir?: string;
16
+ json?: boolean;
17
+ }): Promise<void>;
@@ -0,0 +1,104 @@
1
+ import { ok, fail } from "./envelope.js";
2
+ import { UnknownJourneyError } from "./journey-api.js";
3
+ import { AnchorEditError, PromotedJourneyEditError, addJourneyAnchor, removeJourneyAnchor, suggestJourneyAnchors } from "./journey-anchor-api.js";
4
+ import { emitJson, resolveJourneysDir } from "./cli-shared.js";
5
+ function collect(value, prev) {
6
+ return [...prev, value];
7
+ }
8
+ /** One human line per anchor-rule problem left after an edit. */
9
+ function renderIssues(result, out) {
10
+ for (const i of result.issues)
11
+ out?.(`${i.severity}\t${i.code}\t${i.message}\n\t fix: ${i.fix}\n`);
12
+ out?.(`${result.issues.length} anchor issue(s) — journey '${result.journeyId}'\n`);
13
+ }
14
+ /** Maps an edit failure to its envelope: unknown id and refused edits are usage errors (64). */
15
+ export function anchorEditFailure(program, err) {
16
+ if (err instanceof UnknownJourneyError)
17
+ emitJson(program, fail("E_UNKNOWN_JOURNEY", err.message));
18
+ else if (err instanceof AnchorEditError || err instanceof PromotedJourneyEditError)
19
+ emitJson(program, fail("E_JOURNEY_ANCHOR_ARGS", err.message));
20
+ else
21
+ emitJson(program, fail("E_JOURNEY_ANCHOR_ARGS", String(err instanceof Error ? err.message : err)));
22
+ }
23
+ /**
24
+ * #487 — `jevitate journey anchor add|remove`: edit a draft Journey's anchors without hand-editing
25
+ * `metadata.anchors`. The step id is written at once; the anchor lint issues that remain are printed.
26
+ */
27
+ export function registerJourneyAnchorCommands(journey, program, deps) {
28
+ const anchor = journey.command("anchor").description("add or remove a draft Journey's anchors (#487): named steps to branch missions off, written with the step's stable id");
29
+ anchor
30
+ .command("add <journeyId>")
31
+ .description("add an anchor to a draft Journey: --step takes a 1-based step number or a step id and writes the step id at once; re-lints and prints the anchor issues")
32
+ .requiredOption("--name <name>", "the anchor's name: 1-64 of lowercase a-z, 0-9, . _ - starting with a letter or digit")
33
+ .requiredOption("--step <n|stepId>", "the step the anchor follows: a 1-based step number or a step id")
34
+ .option("--description <text>", "what this state is, in words")
35
+ .option("--probe <text>", "a suggested adversarial probe at this state (repeatable)", collect, [])
36
+ .option("--dir <path>", "journeys directory (default: the repo's .jevitate/journeys; outside a repo ~/.jevitate/journeys)")
37
+ .option("--json", "emit a JSON envelope")
38
+ .action(async function (journeyId) {
39
+ const { name, step, description, probe, dir, json } = this.opts();
40
+ try {
41
+ const result = await addJourneyAnchor(resolveJourneysDir(deps, dir), journeyId, { name, step, ...(description === undefined ? {} : { description }), probes: probe });
42
+ if (json)
43
+ emitJson(program, ok(result));
44
+ else {
45
+ const out = program.configureOutput().writeOut;
46
+ out?.(`added anchor '${name}' to journey '${journeyId}' (step ${step})\n`);
47
+ renderIssues(result, out);
48
+ process.exitCode = 0;
49
+ }
50
+ }
51
+ catch (err) {
52
+ anchorEditFailure(program, err);
53
+ }
54
+ });
55
+ anchor
56
+ .command("remove <journeyId>")
57
+ .description("remove an anchor from a draft Journey; re-lints and prints the anchor issues")
58
+ .requiredOption("--name <name>", "the anchor to remove")
59
+ .option("--dir <path>", "journeys directory (default: the repo's .jevitate/journeys; outside a repo ~/.jevitate/journeys)")
60
+ .option("--json", "emit a JSON envelope")
61
+ .action(async function (journeyId) {
62
+ const { name, dir, json } = this.opts();
63
+ try {
64
+ const result = await removeJourneyAnchor(resolveJourneysDir(deps, dir), journeyId, name);
65
+ if (json)
66
+ emitJson(program, ok(result));
67
+ else {
68
+ const out = program.configureOutput().writeOut;
69
+ out?.(`removed anchor '${name}' from journey '${journeyId}'\n`);
70
+ renderIssues(result, out);
71
+ process.exitCode = 0;
72
+ }
73
+ }
74
+ catch (err) {
75
+ anchorEditFailure(program, err);
76
+ }
77
+ });
78
+ }
79
+ /**
80
+ * #487 — `journey anchors <id> --suggest`: advisory anchor proposals (a new page, a form that became
81
+ * valid, a completed write), each with the `journey anchor add` command that accepts it. Writes nothing.
82
+ */
83
+ export async function runAnchorSuggest(program, deps, id, opts) {
84
+ try {
85
+ const result = await suggestJourneyAnchors(resolveJourneysDir(deps, opts.dir), id);
86
+ if (opts.json) {
87
+ emitJson(program, ok(result));
88
+ return;
89
+ }
90
+ const out = program.configureOutput().writeOut;
91
+ for (const s of result.suggestions) {
92
+ out?.(`${s.name}\tstep ${s.step}${s.stepId === undefined ? "" : ` (${s.stepId})`}\t${s.kind}\t${s.reason}\n\tprobes: ${s.probes.join("; ")}\n\t${s.command}\n`);
93
+ }
94
+ out?.(`${result.suggestions.length} suggestion(s) for journey '${id}' — advisory, nothing was written\n`);
95
+ process.exitCode = 0;
96
+ }
97
+ catch (err) {
98
+ if (err instanceof UnknownJourneyError)
99
+ emitJson(program, fail("E_UNKNOWN_JOURNEY", err.message));
100
+ else
101
+ emitJson(program, fail("E_JOURNEY_ANCHORS_ARGS", String(err instanceof Error ? err.message : err)));
102
+ }
103
+ }
104
+ //# sourceMappingURL=journey-anchor-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-anchor-cli.js","sourceRoot":"","sources":["../src/journey-anchor-cli.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { JevSetup } from "./jev-advisor.js";
4
4
  import { type RunPolicy } from "@jevitate/domain";
5
5
  import { type BrowserPort, type BrowserSession, type EmulationSpec } from "@jevitate/playwright";
6
6
  import { type BrowserRunOptions } from "./browser-run-options.js";
7
+ import { type LayoutDeps } from "./project-dir.js";
7
8
  import { RecordingInterpreter, type StepObserver } from "@jevitate/interpreter";
8
9
  import { type BlockedWrite, type ReplayDeltaSummary } from "@jevitate/explore";
9
10
  import { SecretPixelMask } from "./demo-capture.js";
@@ -12,7 +13,7 @@ import { type ProposedRevisionDraft, type ChangeScope, type JourneyRunResult, ty
12
13
  import { type JourneyResultProposal } from "./journey-result-record.js";
13
14
  import { type FixtureRecord, type MissionFixtures } from "./mission-fixtures.js";
14
15
  import { type ResolvedJourneyEnvironment } from "./environments.js";
15
- import { type OutcomeCheckFailure } from "./journey-network-checks.js";
16
+ import { type OutcomeCheckFailure, type SlowStep } from "./journey-network-checks.js";
16
17
  /**
17
18
  * Distinct from `@jevitate/journey`'s `ParamValidationError` so CLI/API callers
18
19
  * can tell "no such journey" apart from "params didn't match the journey's
@@ -106,6 +107,11 @@ export interface RunJourneyProgrammaticallyOptions {
106
107
  * `StepObserver` (before/after page evidence). Default: a plain `RecordingInterpreter`.
107
108
  */
108
109
  interpreter?: RecordingInterpreter;
110
+ /**
111
+ * #488: the project root a relative `upload` fixture path resolves against (default: the parent
112
+ * of the nearest `.jevitate/`, else the git root, else cwd). Testing seam.
113
+ */
114
+ fixtureBaseDir?: string;
109
115
  /**
110
116
  * The environment to run against (#247, `--env`/`--base-url`, from `resolveJourneyEnvironment`):
111
117
  * the Journey's recorded same-origin URLs move onto its `baseUrl` and the run's allowlist is its
@@ -142,6 +148,12 @@ export interface RunJourneyProgrammaticallyOptions {
142
148
  * Observation only: it never changes the replay. Off: nothing is captured.
143
149
  */
144
150
  actionDeltas?: boolean;
151
+ /**
152
+ * #486: how long (ms) a step's response check waits for a matching request that was sent but has no
153
+ * response yet (a cold start). A late 2xx is an advisory `slowSteps` finding, never a quarantine.
154
+ * Default 15000; a step's own `responseTimeoutMs` overrides it.
155
+ */
156
+ stepResponseTimeoutMs?: number;
145
157
  }
146
158
  /**
147
159
  * #402: how a mutation-proof replay (`journey verify --mutate`) differs from `journey run` — a
@@ -193,6 +205,11 @@ export declare function redactSecretValues<T>(result: T, secrets: readonly strin
193
205
  * params are then checked by `validateParams` as usual.
194
206
  */
195
207
  export declare function prefixParams(full: Journey, prefix: Journey, params: Record<string, string>): Record<string, string>;
208
+ /**
209
+ * #488: the project root relative `upload` fixture paths resolve against — the directory holding
210
+ * `.jevitate/`, else the git root, else the working directory. Never the process cwd by default.
211
+ */
212
+ export declare function journeyFixtureBaseDir(deps?: LayoutDeps): string;
196
213
  /**
197
214
  * #401: the assertion-strength lint (#401) for one Journey by id — an unknown id is refused,
198
215
  * exactly as `journey run`/`promote` refuse one (`UnknownJourneyError`). Pure read; no browser.
@@ -200,6 +217,7 @@ export declare function prefixParams(full: Journey, prefix: Journey, params: Rec
200
217
  export declare function lintJourneyById(dir: string, id: string, opts?: {
201
218
  readRequests?: readonly string[];
202
219
  catalogDir?: string | null;
220
+ baseDir?: string;
203
221
  }): Promise<JourneyLintResult>;
204
222
  /**
205
223
  * Promotes a local Journey (#124, mirrors `promoteMissionTarget` in
@@ -267,7 +285,17 @@ export declare function runJourneyProgrammatically(opts: RunJourneyProgrammatica
267
285
  fixtures?: FixtureRecord;
268
286
  videoPaths?: string[];
269
287
  actionDeltas?: ReplayDeltaSummary;
288
+ slowSteps?: SlowStep[];
289
+ offAllowlistWrites?: string[];
270
290
  } & Partial<ScreenshotsResult> & MutationReplayFields & HealRunFields>;
291
+ /**
292
+ * #485: records each distinct origin outside `allowedOrigins` that the session's context sent a
293
+ * write (any method but GET/HEAD/OPTIONS) to. A replay never blocks them; this only observes.
294
+ * A session whose page has no context events (a test double) observes nothing.
295
+ */
296
+ export declare function watchOffAllowlistWrites(session: BrowserSession, allowedOrigins: readonly string[]): {
297
+ stop(): string[];
298
+ };
271
299
  /**
272
300
  * The revision a run on an environment proposed, onto the STORED Journey: each changed step's
273
301
  * `before` is the stored step, its `after` the retarget — a navigate URL on the environment's base