@forgecart/cli 2.202610102045.0 → 2.202610110825.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 (50) hide show
  1. package/dist/src/authorization/cli-unauthorized-refusal.d.ts +10 -4
  2. package/dist/src/authorization/cli-unauthorized-refusal.js +11 -3
  3. package/dist/src/authorization/cli-unauthorized-refusal.js.map +1 -1
  4. package/dist/src/cli.js +4 -0
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/commands/init.js +5 -47
  7. package/dist/src/commands/init.js.map +1 -1
  8. package/dist/src/commands/sync.d.ts +14 -0
  9. package/dist/src/commands/sync.js +49 -0
  10. package/dist/src/commands/sync.js.map +1 -0
  11. package/dist/src/exit-ladder.d.ts +8 -1
  12. package/dist/src/exit-ladder.js +7 -0
  13. package/dist/src/exit-ladder.js.map +1 -1
  14. package/dist/src/sync/sync-api.error.d.ts +15 -0
  15. package/dist/src/sync/sync-api.error.js +26 -0
  16. package/dist/src/sync/sync-api.error.js.map +1 -0
  17. package/dist/src/sync/sync-divergence.d.ts +43 -0
  18. package/dist/src/sync/sync-divergence.js +104 -0
  19. package/dist/src/sync/sync-divergence.js.map +1 -0
  20. package/dist/src/sync/sync-dotenv.file.d.ts +36 -0
  21. package/dist/src/sync/sync-dotenv.file.js +95 -0
  22. package/dist/src/sync/sync-dotenv.file.js.map +1 -0
  23. package/dist/src/sync/sync-env.runner.d.ts +29 -0
  24. package/dist/src/sync/sync-env.runner.js +95 -0
  25. package/dist/src/sync/sync-env.runner.js.map +1 -0
  26. package/dist/src/sync/sync-record.file.d.ts +28 -0
  27. package/dist/src/sync/sync-record.file.js +86 -0
  28. package/dist/src/sync/sync-record.file.js.map +1 -0
  29. package/dist/src/sync/sync-repository.d.ts +110 -0
  30. package/dist/src/sync/sync-repository.js +396 -0
  31. package/dist/src/sync/sync-repository.js.map +1 -0
  32. package/dist/src/sync/sync-round.d.ts +95 -0
  33. package/dist/src/sync/sync-round.js +355 -0
  34. package/dist/src/sync/sync-round.js.map +1 -0
  35. package/dist/src/sync/sync-watch.d.ts +48 -0
  36. package/dist/src/sync/sync-watch.js +144 -0
  37. package/dist/src/sync/sync-watch.js.map +1 -0
  38. package/dist/src/sync/sync.runner.d.ts +37 -0
  39. package/dist/src/sync/sync.runner.js +121 -0
  40. package/dist/src/sync/sync.runner.js.map +1 -0
  41. package/dist/src/sync/type/sync.types.d.ts +159 -0
  42. package/dist/src/sync/type/sync.types.js +30 -0
  43. package/dist/src/sync/type/sync.types.js.map +1 -0
  44. package/dist/src/sync/workspace-sync.client.d.ts +85 -0
  45. package/dist/src/sync/workspace-sync.client.js +317 -0
  46. package/dist/src/sync/workspace-sync.client.js.map +1 -0
  47. package/dist/src/util/dotenv.util.d.ts +28 -0
  48. package/dist/src/util/dotenv.util.js +81 -0
  49. package/dist/src/util/dotenv.util.js.map +1 -0
  50. package/package.json +1 -1
@@ -8,12 +8,18 @@ export declare enum CliUnauthorizedReason {
8
8
  /** The authorization's window closed — or the server no longer knows its code. */
9
9
  EXPIRED = "expired",
10
10
  /** `--timeout` elapsed before an approval. */
11
- TIMED_OUT = "timed-out"
11
+ TIMED_OUT = "timed-out",
12
+ /** A command that never authorizes (`forgecart sync`, #2781) found a credential in no source. */
13
+ MISSING = "missing",
14
+ /** The admin API refused the credentials the run settled — UNAUTHORIZED or FORBIDDEN. */
15
+ REFUSED = "refused"
12
16
  }
13
17
  /**
14
- * An authorization that did not end approved — exit
15
- * {@link CliExitLadder.unauthorized} with {@link CLI_UNAUTHORIZED_CODE}, never a
16
- * hang (#2772, record `refs/design/cli-improvements`, `init?case=headless`).
18
+ * Credentials a run cannot use — exit {@link CliExitLadder.unauthorized} with
19
+ * {@link CLI_UNAUTHORIZED_CODE}, never a hang: an authorization that did not
20
+ * end approved (#2772, record `refs/design/cli-improvements`,
21
+ * `init?case=headless`), or, for a command that never authorizes, a credential
22
+ * absent from every source or credentials the admin API refused (#2781).
17
23
  */
18
24
  export declare class CliUnauthorizedRefusal extends CliRefusal {
19
25
  readonly reason: CliUnauthorizedReason;
@@ -10,17 +10,25 @@ export var CliUnauthorizedReason;
10
10
  CliUnauthorizedReason["EXPIRED"] = "expired";
11
11
  /** `--timeout` elapsed before an approval. */
12
12
  CliUnauthorizedReason["TIMED_OUT"] = "timed-out";
13
+ /** A command that never authorizes (`forgecart sync`, #2781) found a credential in no source. */
14
+ CliUnauthorizedReason["MISSING"] = "missing";
15
+ /** The admin API refused the credentials the run settled — UNAUTHORIZED or FORBIDDEN. */
16
+ CliUnauthorizedReason["REFUSED"] = "refused";
13
17
  })(CliUnauthorizedReason || (CliUnauthorizedReason = {}));
14
18
  /** What each reason tells the merchant: what happened, that nothing was written, and the two ways on. */
15
19
  const REASON_LINES = {
16
20
  [CliUnauthorizedReason.DENIED]: 'the authorization was denied at /authorize; nothing was written.',
17
21
  [CliUnauthorizedReason.EXPIRED]: 'the authorization window closed before an approval; nothing was written. Re-run to open a new one, or export the four FORGECART_* keys.',
18
22
  [CliUnauthorizedReason.TIMED_OUT]: 'no credentials in the environment, in .env or in .forgecart/config.json, and no approval within --timeout; nothing was written. Export the four FORGECART_* keys, or authorize at the URL above.',
23
+ [CliUnauthorizedReason.MISSING]: 'a credential is in none of the environment, .env and .forgecart/config.json, so nothing was sent. Export the four FORGECART_* keys, or run `forgecart init` to authorize this machine.',
24
+ [CliUnauthorizedReason.REFUSED]: 'the admin API refused the credentials; nothing was written. Export the four FORGECART_* keys of a channel admin, or run `forgecart init` to authorize this machine.',
19
25
  };
20
26
  /**
21
- * An authorization that did not end approved — exit
22
- * {@link CliExitLadder.unauthorized} with {@link CLI_UNAUTHORIZED_CODE}, never a
23
- * hang (#2772, record `refs/design/cli-improvements`, `init?case=headless`).
27
+ * Credentials a run cannot use — exit {@link CliExitLadder.unauthorized} with
28
+ * {@link CLI_UNAUTHORIZED_CODE}, never a hang: an authorization that did not
29
+ * end approved (#2772, record `refs/design/cli-improvements`,
30
+ * `init?case=headless`), or, for a command that never authorizes, a credential
31
+ * absent from every source or credentials the admin API refused (#2781).
24
32
  */
25
33
  export class CliUnauthorizedRefusal extends CliRefusal {
26
34
  reason;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-unauthorized-refusal.js","sourceRoot":"","sources":["../../../src/authorization/cli-unauthorized-refusal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAElE,iDAAiD;AACjD,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,8DAA8D;IAC9D,0CAAiB,CAAA;IACjB,kFAAkF;IAClF,4CAAmB,CAAA;IACnB,8CAA8C;IAC9C,gDAAuB,CAAA;AACzB,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAED,yGAAyG;AACzG,MAAM,YAAY,GAAoD;IACpE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAC5B,kEAAkE;IACpE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC7B,yIAAyI;IAC3I,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAC/B,kMAAkM;CACrM,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IAC/B;IAArB,YAAqB,MAA6B;QAChD,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,GAAG,qBAAqB,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QADvE,WAAM,GAAN,MAAM,CAAuB;QAEhD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"cli-unauthorized-refusal.js","sourceRoot":"","sources":["../../../src/authorization/cli-unauthorized-refusal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAElE,iDAAiD;AACjD,MAAM,CAAN,IAAY,qBAWX;AAXD,WAAY,qBAAqB;IAC/B,8DAA8D;IAC9D,0CAAiB,CAAA;IACjB,kFAAkF;IAClF,4CAAmB,CAAA;IACnB,8CAA8C;IAC9C,gDAAuB,CAAA;IACvB,iGAAiG;IACjG,4CAAmB,CAAA;IACnB,yFAAyF;IACzF,4CAAmB,CAAA;AACrB,CAAC,EAXW,qBAAqB,KAArB,qBAAqB,QAWhC;AAED,yGAAyG;AACzG,MAAM,YAAY,GAAoD;IACpE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAC5B,kEAAkE;IACpE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC7B,yIAAyI;IAC3I,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAC/B,kMAAkM;IACpM,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC7B,wLAAwL;IAC1L,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC7B,qKAAqK;CACxK,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IAC/B;IAArB,YAAqB,MAA6B;QAChD,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,GAAG,qBAAqB,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QADvE,WAAM,GAAN,MAAM,CAAuB;QAEhD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
package/dist/src/cli.js CHANGED
@@ -3,6 +3,7 @@ import { createDesignSystemCommand } from './commands/design-system.js';
3
3
  import { createInitCommand } from './commands/init.js';
4
4
  import { createDeleteCommand, createDeployCommand, createEnvCommand, createInitApplicationCommand, createListCommand, createLogsCommand, createScaleCommand, createStatusCommand, createWhoamiCommand, } from './commands/placeholders.js';
5
5
  import { createRefreshCommand } from './commands/refresh.js';
6
+ import { createSyncCommand, createSyncEnvCommand } from './commands/sync.js';
6
7
  import { CliExitLadder, CliRefusal } from './exit-ladder.js';
7
8
  import { printError } from './output.js';
8
9
  import { readPackageVersion } from './version.js';
@@ -28,6 +29,9 @@ export function createProgram() {
28
29
  .version(CLI_VERSION);
29
30
  program.addCommand(createInitCommand());
30
31
  program.addCommand(createRefreshCommand());
32
+ program.addCommand(createSyncCommand());
33
+ // The workspace's side of `sync`, run in the pod by the admin API — never a merchant's.
34
+ program.addCommand(createSyncEnvCommand(), { hidden: true });
31
35
  program.addCommand(createDesignSystemCommand());
32
36
  program.addCommand(createInitApplicationCommand());
33
37
  program.addCommand(createDeployCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { print } from '../output.js';
9
9
  import { QuestionPromptAdapter } from '../question/question-prompt.adapter.js';
10
10
  import { TemplateSet } from '../template/template-set.js';
11
11
  import { describeTemplateIdentity, isBlankTemplate, parseTemplateIdentity, PRE_IDENTITY_TEMPLATE, sameTemplateIdentity, } from '../template/util/template-identity.util.js';
12
+ import { mergeDotenv } from '../util/dotenv.util.js';
12
13
  import { readPackageVersion } from '../version.js';
13
14
  import { stampDesignSystem, templateDesignSystem, } from './design-system-seat.js';
14
15
  import { InitQuestions } from './init-questions.js';
@@ -273,51 +274,6 @@ function buildPlatformEnv(channelToken, options) {
273
274
  }
274
275
  return entries;
275
276
  }
276
- /**
277
- * Merge the platform-owned keys into an existing `.env`, preserving every
278
- * other line — merchant keys, comments, ordering — verbatim (#1123: a
279
- * wholesale rewrite wiped the demo store's DEMO_* config on three
280
- * provisioning drives). Platform keys are refreshed in place at their
281
- * existing position; duplicates collapse onto the first occurrence; managed
282
- * keys with no existing line append in canonical order. Trailing blank lines
283
- * normalize to the single final newline. An empty `existing` renders the
284
- * canonical fresh `.env`, byte-identical to the pre-merge scaffold output.
285
- */
286
- function mergeEnv(existing, channelToken, options) {
287
- const platform = buildPlatformEnv(channelToken, options);
288
- const refreshed = new Set();
289
- const merged = [];
290
- for (const line of existing.split('\n')) {
291
- const out = refreshPlatformLine(line, platform, refreshed);
292
- if (out !== null) {
293
- merged.push(out);
294
- }
295
- }
296
- while (merged.length > 0 && merged[merged.length - 1] === '') {
297
- merged.pop();
298
- }
299
- for (const [key, value] of platform) {
300
- if (!refreshed.has(key)) {
301
- merged.push(`${key}=${value}`);
302
- }
303
- }
304
- merged.push('');
305
- return merged.join('\n');
306
- }
307
- /**
308
- * Map one existing `.env` line through the merge: workspace-owned lines pass
309
- * through verbatim, a managed platform key refreshes in place on first sight,
310
- * and its later duplicates drop (null).
311
- */
312
- function refreshPlatformLine(line, platform, refreshed) {
313
- const key = /^([A-Z][A-Z0-9_]*)=/.exec(line)?.[1];
314
- if (!key || !platform.has(key))
315
- return line;
316
- if (refreshed.has(key))
317
- return null;
318
- refreshed.add(key);
319
- return `${key}=${platform.get(key) ?? ''}`;
320
- }
321
277
  /** Read a file that may legitimately not exist yet; any other failure propagates. */
322
278
  async function readFileIfPresent(path) {
323
279
  try {
@@ -339,14 +295,16 @@ async function readFileIfPresent(path) {
339
295
  * `config.json` is pure platform state and is rewritten wholesale, mirroring the
340
296
  * design-system seat the workspace's template manifest records (#2773) — every
341
297
  * provisioning drive re-runs init, and a rewrite without it would drop the
342
- * mirror; `.env` is merge-preserved (#1123 — see mergeEnv).
298
+ * mirror; `.env` is merge-preserved: the platform keys this run manages are
299
+ * refreshed in place and every other line kept verbatim (#1123 — see
300
+ * mergeDotenv). An empty `.env` renders the canonical fresh one.
343
301
  */
344
302
  async function writeChannelConfig(targetDir, channelToken, options, scaffold, designSystem) {
345
303
  await mkdir(join(targetDir, '.forgecart'), { recursive: true });
346
304
  await writeFile(join(targetDir, CONFIG_RELPATH), `${JSON.stringify(buildConfig(channelToken, options, scaffold, designSystem), null, 2)}\n`, 'utf8');
347
305
  const envPath = join(targetDir, '.env');
348
306
  const existingEnv = await readFileIfPresent(envPath);
349
- await writeFile(envPath, mergeEnv(existingEnv, channelToken, options), 'utf8');
307
+ await writeFile(envPath, mergeDotenv(existingEnv, buildPlatformEnv(channelToken, options)), 'utf8');
350
308
  }
351
309
  /**
352
310
  * The design-system seat a full scaffold records (#2773), settled from the
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Build the `sync [name]` command (#2781): its own flags and the question
4
+ * adapter's three, which answer the divergence selection. No flag carries a
5
+ * token, a secret or a URL — the run settles the four `FORGECART_*` keys from
6
+ * the environment, `.env` and `.forgecart/config.json`.
7
+ */
8
+ export declare function createSyncCommand(): Command;
9
+ /**
10
+ * Build the `sync-env [name]` command — the workspace's side of `forgecart
11
+ * sync`, which the admin API runs in the pod. It stays out of the help: a
12
+ * merchant never runs it.
13
+ */
14
+ export declare function createSyncEnvCommand(): Command;
@@ -0,0 +1,49 @@
1
+ import { Command, InvalidArgumentError, Option } from 'commander';
2
+ import { QuestionPromptAdapter } from '../question/question-prompt.adapter.js';
3
+ import { SyncEnvRunner } from '../sync/sync-env.runner.js';
4
+ import { SyncRunner } from '../sync/sync.runner.js';
5
+ /** `--timeout`'s default: five minutes for one exchange — a push's landing runs the workspace's gates. */
6
+ const DEFAULT_TIMEOUT_SECONDS = 300;
7
+ /** `--timeout`: a positive whole number of seconds. */
8
+ function parseTimeoutSeconds(value) {
9
+ if (!/^\d+$/.test(value) || Number(value) === 0) {
10
+ throw new InvalidArgumentError('Pass a positive whole number of seconds.');
11
+ }
12
+ return Number(value);
13
+ }
14
+ /**
15
+ * Build the `sync [name]` command (#2781): its own flags and the question
16
+ * adapter's three, which answer the divergence selection. No flag carries a
17
+ * token, a secret or a URL — the run settles the four `FORGECART_*` keys from
18
+ * the environment, `.env` and `.forgecart/config.json`.
19
+ */
20
+ export function createSyncCommand() {
21
+ const command = new Command('sync')
22
+ .description("Keep this storefront's tree and the workspace's serving tree the same tree: push local changes, pull the workspace's, and settle a divergence with one selection")
23
+ .argument('[name]', 'Storefront directory (defaults to the current directory)')
24
+ .option('--pull', "Take the workspace's tree onto this storefront; never push")
25
+ .option('--watch', 'Keep syncing until Ctrl-C: local edits push, workspace landings pull')
26
+ .option('--dry-run', 'Print the plan and every path a push would send; move nothing')
27
+ .addOption(new Option('--timeout <seconds>', 'Seconds one exchange with the admin API may take, a push landing included, before sync exits 1')
28
+ .argParser(parseTimeoutSeconds)
29
+ .default(DEFAULT_TIMEOUT_SECONDS))
30
+ .action(async (name, options) => {
31
+ await new SyncRunner(name, options).run();
32
+ });
33
+ return QuestionPromptAdapter.registerOptions(command);
34
+ }
35
+ /**
36
+ * Build the `sync-env [name]` command — the workspace's side of `forgecart
37
+ * sync`, which the admin API runs in the pod. It stays out of the help: a
38
+ * merchant never runs it.
39
+ */
40
+ export function createSyncEnvCommand() {
41
+ return new Command('sync-env')
42
+ .description("Read or merge the merchant lines of the storefront's .env, as one JSON report")
43
+ .argument('[name]', 'Storefront directory (defaults to the current directory)')
44
+ .option('--merge', 'Merge the merchant lines FORGECART_SYNC_ENV_LINES carries')
45
+ .action(async (name, options) => {
46
+ await new SyncEnvRunner(name, options).run();
47
+ });
48
+ }
49
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,0GAA0G;AAC1G,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,uDAAuD;AACvD,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;SAChC,WAAW,CACV,kKAAkK,CACnK;SACA,QAAQ,CAAC,QAAQ,EAAE,0DAA0D,CAAC;SAC9E,MAAM,CAAC,QAAQ,EAAE,4DAA4D,CAAC;SAC9E,MAAM,CAAC,SAAS,EAAE,sEAAsE,CAAC;SACzF,MAAM,CAAC,WAAW,EAAE,+DAA+D,CAAC;SACpF,SAAS,CACR,IAAI,MAAM,CACR,qBAAqB,EACrB,gGAAgG,CACjG;SACE,SAAS,CAAC,mBAAmB,CAAC;SAC9B,OAAO,CAAC,uBAAuB,CAAC,CACpC;SACA,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,OAAoB,EAAE,EAAE;QAC/D,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IACL,OAAO,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,+EAA+E,CAAC;SAC5F,QAAQ,CAAC,QAAQ,EAAE,0DAA0D,CAAC;SAC9E,MAAM,CAAC,SAAS,EAAE,2DAA2D,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,OAAuB,EAAE,EAAE;QAClE,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -18,7 +18,14 @@ export declare enum CliExitLadder {
18
18
  * and nobody has said yes yet; a caller supplies the four `FORGECART_*` keys
19
19
  * in the environment or approves the authorization.
20
20
  */
21
- unauthorized = 3
21
+ unauthorized = 3,
22
+ /**
23
+ * The laptop and the workspace both changed since their last sync (#2781):
24
+ * nothing moved on either side, and a caller settles which tree overrides the
25
+ * other — `--answer sync-divergence=local|workspace` — or leaves both as they
26
+ * are.
27
+ */
28
+ diverged = 4
22
29
  }
23
30
  /**
24
31
  * The CLI stopping for a reason that is not an error, on its own rung of
@@ -20,6 +20,13 @@ export var CliExitLadder;
20
20
  * in the environment or approves the authorization.
21
21
  */
22
22
  CliExitLadder[CliExitLadder["unauthorized"] = 3] = "unauthorized";
23
+ /**
24
+ * The laptop and the workspace both changed since their last sync (#2781):
25
+ * nothing moved on either side, and a caller settles which tree overrides the
26
+ * other — `--answer sync-divergence=local|workspace` — or leaves both as they
27
+ * are.
28
+ */
29
+ CliExitLadder[CliExitLadder["diverged"] = 4] = "diverged";
23
30
  })(CliExitLadder || (CliExitLadder = {}));
24
31
  /**
25
32
  * The CLI stopping for a reason that is not an error, on its own rung of
@@ -1 +1 @@
1
- {"version":3,"file":"exit-ladder.js","sourceRoot":"","sources":["../../src/exit-ladder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,aAgBX;AAhBD,WAAY,aAAa;IACvB,4EAA4E;IAC5E,mDAAS,CAAA;IACT;;;;OAIG;IACH,6EAAsB,CAAA;IACtB;;;;;OAKG;IACH,iEAAgB,CAAA;AAClB,CAAC,EAhBW,aAAa,KAAb,aAAa,QAgBxB;AAED;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAExB;IACA;IAFX,YACW,QAAuB,EACvB,KAAwB;QAEjC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAHf,aAAQ,GAAR,QAAQ,CAAe;QACvB,UAAK,GAAL,KAAK,CAAmB;QAGjC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"exit-ladder.js","sourceRoot":"","sources":["../../src/exit-ladder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,aAuBX;AAvBD,WAAY,aAAa;IACvB,4EAA4E;IAC5E,mDAAS,CAAA;IACT;;;;OAIG;IACH,6EAAsB,CAAA;IACtB;;;;;OAKG;IACH,iEAAgB,CAAA;IAChB;;;;;OAKG;IACH,yDAAY,CAAA;AACd,CAAC,EAvBW,aAAa,KAAb,aAAa,QAuBxB;AAED;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAExB;IACA;IAFX,YACW,QAAuB,EACvB,KAAwB;QAEjC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAHf,aAAQ,GAAR,QAAQ,CAAe;QACvB,UAAK,GAAL,KAAK,CAAmB;QAGjC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A typed refusal the admin API answered a sync operation with (#2781): the
3
+ * `ErrorCode` its GraphQL error carries and the variables beside it — what a
4
+ * caller routes on. Credentials the API refuses are no such error: they end the
5
+ * run as `CliUnauthorizedRefusal`.
6
+ */
7
+ export declare class SyncApiError extends Error {
8
+ readonly endpoint: string;
9
+ readonly field: string;
10
+ readonly code: string;
11
+ readonly variables: Readonly<Record<string, string>>;
12
+ constructor(endpoint: string, field: string, code: string, variables: Readonly<Record<string, string>>);
13
+ /** The variables as ` (key=value, …)` — nothing when there are none. */
14
+ private static describe;
15
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A typed refusal the admin API answered a sync operation with (#2781): the
3
+ * `ErrorCode` its GraphQL error carries and the variables beside it — what a
4
+ * caller routes on. Credentials the API refuses are no such error: they end the
5
+ * run as `CliUnauthorizedRefusal`.
6
+ */
7
+ export class SyncApiError extends Error {
8
+ endpoint;
9
+ field;
10
+ code;
11
+ variables;
12
+ constructor(endpoint, field, code, variables) {
13
+ super(`The admin API at ${endpoint} refused ${field}: ${code}${SyncApiError.describe(variables)}.`);
14
+ this.endpoint = endpoint;
15
+ this.field = field;
16
+ this.code = code;
17
+ this.variables = variables;
18
+ this.name = 'SyncApiError';
19
+ }
20
+ /** The variables as ` (key=value, …)` — nothing when there are none. */
21
+ static describe(variables) {
22
+ const pairs = Object.entries(variables).map(([key, value]) => `${key}=${value}`);
23
+ return pairs.length === 0 ? '' : ` (${pairs.join(', ')})`;
24
+ }
25
+ }
26
+ //# sourceMappingURL=sync-api.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-api.error.js","sourceRoot":"","sources":["../../../src/sync/sync-api.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAE1B;IACA;IACA;IACA;IAJX,YACW,QAAgB,EAChB,KAAa,EACb,IAAY,EACZ,SAA2C;QAEpD,KAAK,CACH,oBAAoB,QAAQ,YAAY,KAAK,KAAK,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAC7F,CAAC;QAPO,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,cAAS,GAAT,SAAS,CAAkC;QAKpD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;IAED,wEAAwE;IAChE,MAAM,CAAC,QAAQ,CAAC,SAA2C;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ import { CliRefusal } from '../exit-ladder.js';
2
+ import type { QuestionPrompt } from '../question/type/question-prompt.types.js';
3
+ import { SyncDivergenceChoice, type SyncDivergencePoint } from './type/sync.types.js';
4
+ /** The code a divergence is named by — the admin API's own for a push the board moved past. */
5
+ export declare const SYNC_DIVERGED_CODE = "WORKSPACE_SYNC_DIVERGED";
6
+ /** The selection's stable key: `--answer sync-divergence=local` answers it on every run. */
7
+ export declare const SYNC_DIVERGENCE_KEY = "sync-divergence";
8
+ /**
9
+ * A divergence left unsettled — aborted, or a selection no flag answered and
10
+ * no terminal could ask: exit {@link CliExitLadder.diverged}, nothing moved on
11
+ * either side. It carries where both sides stood, so a watching run waits for
12
+ * either to move before it asks again.
13
+ */
14
+ export declare class SyncDivergedRefusal extends CliRefusal {
15
+ readonly point: SyncDivergencePoint;
16
+ constructor(lines: readonly string[], point: SyncDivergencePoint);
17
+ }
18
+ /**
19
+ * The ONE selection a divergence asks (#2781) — never a merge: which tree
20
+ * overrides the other, or Abort, the default `--yes` takes. A `--pull` run
21
+ * never pushes, so it is not offered the laptop's side.
22
+ */
23
+ export declare class SyncDivergenceSelection {
24
+ private readonly prompt;
25
+ private readonly pullOnly;
26
+ /**
27
+ * @param prompt the question adapter of the run.
28
+ * @param pullOnly whether the run was told never to push (`--pull`).
29
+ */
30
+ constructor(prompt: QuestionPrompt, pullOnly: boolean);
31
+ /**
32
+ * Which tree overrides the other. Abort, and a selection the run cannot ask,
33
+ * end the run on exit 4 with `description` — the divergence in words.
34
+ */
35
+ settle(description: readonly string[], point: SyncDivergencePoint): Promise<SyncDivergenceChoice>;
36
+ /** The option the run's flags or its terminal chose; a selection neither can answer is the divergence's refusal. */
37
+ private ask;
38
+ private question;
39
+ /** Every option, in order — but the laptop's side, for a run that never pushes. */
40
+ private offered;
41
+ /** The option an answer chose — Abort for an answer that chose none. */
42
+ private choiceOf;
43
+ }
@@ -0,0 +1,104 @@
1
+ import { CliExitLadder, CliRefusal } from '../exit-ladder.js';
2
+ import { QuestionUnansweredRefusal } from '../question/question-unanswered-refusal.js';
3
+ import { mintQuestionId } from '../question/util/question-id.util.js';
4
+ import { SyncDivergenceChoice } from './type/sync.types.js';
5
+ /** The code a divergence is named by — the admin API's own for a push the board moved past. */
6
+ export const SYNC_DIVERGED_CODE = 'WORKSPACE_SYNC_DIVERGED';
7
+ /** The selection's stable key: `--answer sync-divergence=local` answers it on every run. */
8
+ export const SYNC_DIVERGENCE_KEY = 'sync-divergence';
9
+ /** The choices an answer's option id names. */
10
+ const CHOICES = new Map(Object.values(SyncDivergenceChoice).map((choice) => [choice, choice]));
11
+ /** The selection's three options. */
12
+ const LOCAL_OPTION = {
13
+ id: SyncDivergenceChoice.LOCAL,
14
+ label: 'Local overrides workspace',
15
+ hint: "push this laptop's tree onto the serving tip; the workspace's changes are replaced",
16
+ };
17
+ const WORKSPACE_OPTION = {
18
+ id: SyncDivergenceChoice.WORKSPACE,
19
+ label: 'Workspace overrides local',
20
+ hint: "write the serving tree onto this laptop; this laptop's changes are replaced",
21
+ };
22
+ const ABORT_OPTION = {
23
+ id: SyncDivergenceChoice.ABORT,
24
+ label: 'Abort',
25
+ hint: 'move nothing on either side',
26
+ };
27
+ /**
28
+ * A divergence left unsettled — aborted, or a selection no flag answered and
29
+ * no terminal could ask: exit {@link CliExitLadder.diverged}, nothing moved on
30
+ * either side. It carries where both sides stood, so a watching run waits for
31
+ * either to move before it asks again.
32
+ */
33
+ export class SyncDivergedRefusal extends CliRefusal {
34
+ point;
35
+ constructor(lines, point) {
36
+ super(CliExitLadder.diverged, lines);
37
+ this.point = point;
38
+ this.name = 'SyncDivergedRefusal';
39
+ }
40
+ }
41
+ /**
42
+ * The ONE selection a divergence asks (#2781) — never a merge: which tree
43
+ * overrides the other, or Abort, the default `--yes` takes. A `--pull` run
44
+ * never pushes, so it is not offered the laptop's side.
45
+ */
46
+ export class SyncDivergenceSelection {
47
+ prompt;
48
+ pullOnly;
49
+ /**
50
+ * @param prompt the question adapter of the run.
51
+ * @param pullOnly whether the run was told never to push (`--pull`).
52
+ */
53
+ constructor(prompt, pullOnly) {
54
+ this.prompt = prompt;
55
+ this.pullOnly = pullOnly;
56
+ }
57
+ /**
58
+ * Which tree overrides the other. Abort, and a selection the run cannot ask,
59
+ * end the run on exit 4 with `description` — the divergence in words.
60
+ */
61
+ async settle(description, point) {
62
+ const choice = await this.ask(description, point);
63
+ if (choice === SyncDivergenceChoice.ABORT) {
64
+ throw new SyncDivergedRefusal([...description, 'aborted: nothing moved on either side.'], point);
65
+ }
66
+ return choice;
67
+ }
68
+ /** The option the run's flags or its terminal chose; a selection neither can answer is the divergence's refusal. */
69
+ async ask(description, point) {
70
+ try {
71
+ const answers = await this.prompt.ask([this.question()]);
72
+ return this.choiceOf(answers.at(0)?.optionIds?.[0]);
73
+ }
74
+ catch (error) {
75
+ if (!(error instanceof QuestionUnansweredRefusal))
76
+ throw error;
77
+ throw new SyncDivergedRefusal([...description, ...error.lines], point);
78
+ }
79
+ }
80
+ question() {
81
+ return {
82
+ id: mintQuestionId(),
83
+ key: SYNC_DIVERGENCE_KEY,
84
+ question: 'This laptop and the workspace both changed since the last sync. Which tree wins?',
85
+ kind: 'choice',
86
+ options: this.offered(),
87
+ allowMultiple: false,
88
+ defaultOptionId: SyncDivergenceChoice.ABORT,
89
+ };
90
+ }
91
+ /** Every option, in order — but the laptop's side, for a run that never pushes. */
92
+ offered() {
93
+ if (this.pullOnly)
94
+ return [WORKSPACE_OPTION, ABORT_OPTION];
95
+ return [LOCAL_OPTION, WORKSPACE_OPTION, ABORT_OPTION];
96
+ }
97
+ /** The option an answer chose — Abort for an answer that chose none. */
98
+ choiceOf(optionId) {
99
+ if (optionId === undefined)
100
+ return SyncDivergenceChoice.ABORT;
101
+ return CHOICES.get(optionId) ?? SyncDivergenceChoice.ABORT;
102
+ }
103
+ }
104
+ //# sourceMappingURL=sync-divergence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-divergence.js","sourceRoot":"","sources":["../../../src/sync/sync-divergence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type CliCredentials } from '../authorization/type/cli-authorization.types.js';
2
+ import type { SyncOutgoingEnv, SyncTakenEnv } from './type/sync.types.js';
3
+ /**
4
+ * The laptop's `.env`, as `forgecart sync` carries it (#2781). Only merchant
5
+ * lines travel — the platform's `FORGECART_*` keys never cross — and they
6
+ * travel under init's merge rule: a key is refreshed in place, every other line
7
+ * is kept verbatim, nothing is deleted.
8
+ *
9
+ * A push carries the merchant lines changed since they last travelled, so a
10
+ * key the workspace changed meanwhile is not overwritten by a stale copy; a
11
+ * pull takes the workspace's lines for every key the laptop has not changed
12
+ * since, beside the run's four credentials — the `.env` a fresh pull writes.
13
+ * What travelled is recorded as a digest per key, never the value.
14
+ */
15
+ export declare class SyncDotenvFile {
16
+ private readonly path;
17
+ constructor(storefront: string);
18
+ /** The merchant lines a push carries — every one changed since `recorded` — and the digests to record once they land. */
19
+ outgoing(recorded: Readonly<Record<string, string>> | null): Promise<SyncOutgoingEnv>;
20
+ /** How many of the workspace's merchant lines a pull would take — every key the laptop has not changed since `recorded`. */
21
+ takeable(workspaceLines: readonly string[], recorded: Readonly<Record<string, string>> | null): Promise<number>;
22
+ /**
23
+ * Take the workspace's merchant lines — for every key the laptop has not
24
+ * changed since `recorded` — and the run's four credentials into `.env`,
25
+ * under init's merge rule. A key the laptop changed keeps the laptop's value
26
+ * and the digest it last travelled with, so the next push still carries it.
27
+ */
28
+ take(workspaceLines: readonly string[], credentials: CliCredentials, recorded: Readonly<Record<string, string>> | null): Promise<SyncTakenEnv>;
29
+ /** The keys whose line differs from the one that last travelled — none before a first sync. */
30
+ private changedSince;
31
+ /** The four credentials as `.env` assignments, in the order init writes them. */
32
+ private credentialEntries;
33
+ private digestsOf;
34
+ /** The `.env` text — empty when the storefront has none; any other failure propagates. */
35
+ private read;
36
+ }